IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Tkinter制作工具学习记录(二)实现目录切换 -> 正文阅读

[Python知识库]Tkinter制作工具学习记录(二)实现目录切换

1.paramiko建立连接

    def tk_Connect_service(cmd):
        #获取IP
        mcsip = EntryMSCIP.get()
        # 获取SSHClient实例
        client = paramiko.SSHClient()
        client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        # 连接SSH服务端
        try:
            client.connect(mcsip, username="", password="", port=)
            stdin, stdout, stderr = client.exec_command(command=cmd)
            result = stdout.read().decode('utf-8')
            return result
        except:
            messagebox.showerror('提示', '未能连接SSH服务端')
            frameccu.destroy()
            btn1.config(state='disable')
            Radiobuttonsucess.config(bg='grey')

2.远程查询指定路径下的目录

?

 #dir存放路径
 dir = []
 #起始路径
 file_path = '/home'
 def tk_Get_Mapdir(self):
        #清空dir
        dir.clear()
        #插入起始路径
        dir.append(file_path)
        #listbox作为目录展示
        listbox.delete(0, 'end')
        #s1 = "| awk '{print $9}'"
        #过滤掉不需要展示的目录
        s2 = "| grep ginger_[maplog]"
        cmd = 'ls   %s   %s' % (file_path, s2)
        print(cmd)
        #paramiko远程执行命令
        result = method.tk_Connect_service(cmd=cmd)
        #输出的结果拼在一起
        i = ' '.join(result.split())
        s = i.split(' ')
        if s != '':
            #将路径展示到label
            labelpath.config(text=file_path)
            for k in s:
                #listbox作为目录展示
                listbox.insert('end', k)
        else:
            listbox.insert('end', '没有查询到地图文件')

3.双击listbox中的目录实现进入下级目录,右键菜单返回上级

方法绑定?

 #返回菜单
 menubarmap = tk.Menu(frameccu, tearoff=0)
 #绑定返回方法
 menubarmap.add_command(label='返回', command=lambda: method.updir(self=self))
 #事件
 def pop(event):
    menubarmap.post(event.x_root, event.y_root)
 #右键绑定事件
 listbox.bind("<Button-3>", pop)
 #绑定双击触发的方法
 listbox.bind('<Double-Button-1>', method.tk_next_dir)

切换下级目录方法?

    global dir
    global r
    #存放路径
    dir = []
    #设置初始路径
    dir.append(file_path)
    def tk_next_dir(self):
        #dirselect 获取listbox双击选择的目录
        dirselect = listbox.get(listbox.curselection())
        #dir2 为拼接的下级路径
        dir2 = dir[-1] + '/' + dirselect
        #label显示拼接的下级路径
        labelpath.config(text=dir2)
        #判断是否为json文件
        if 'json' in dirselect:
            #开启下拉框
            combobox.config(state='normal')
            combobox.set('')
            #预览json文件
            cmd = 'cat   %s ' % dir2
            result = method.tk_Connect_service(cmd=cmd)
            textview.delete(0.0, END)
            #将输出转化为json格式
            r = json.loads(result)
            dict = []
            for name in r:
                dict.append(name)
                #下拉框插入json key
                combobox.config(values=dict)
            #输出标准格式json
            y = json.dumps(r, sort_keys=True, indent=4, separators=(',', ': '), ensure_ascii=False)
            textview.insert(INSERT, y)
            textview.see(END)
        #如果双击的是yaml文件,直接预览,不做处理
        elif 'yaml' in dirselect:
            #处理yaml
            combobox.config(state='disable')
            cmd = 'cat   %s ' % dir2
            result = method.tk_Connect_service(cmd=cmd)
            textview.delete(0.0, END)
            textview.insert(INSERT, result)
            textview.see(END)
        #如果双击的是日志文件,直接预览,不做处理
        elif '.log' in dirselect:
            combobox.config(state='disable')
            cmd = 'cat   %s ' % dir2
            result = method.tk_Connect_service(cmd=cmd)
            textview.delete(0.0, END)
            textview.insert(INSERT, result)
            textview.see(END)
        #其他情况
        else:
            combobox.config(state='disable')
            dir.append(dir2)

            listbox.delete(0, 'end')
            cmd = 'ls   %s ' % dir[-1]
            result = method.tk_Connect_service(cmd=cmd)
            i = ' '.join(result.split())
            if i == '':
                listbox.insert('end', '目录为空')
               # print('目录为空时的dir---', dir)
            else:
                s = i.split(' ')
                if s != ' ':
                    for k in s:
                        listbox.insert('end', k)
                else:
                    listbox.insert('end', '没有查询到文件')

返回方法:将存放路径的dir字典中的最后元素删除

    def updir(self):
        listbox.delete(0, 'end')
        del dir[-1]
        #if len(dir) == 0:
        if dir[-1] == '/home/ginger':
            print('kong')
            method.tk_Get_Mapdir(self=self)
        else:
            s2 = "| grep ginger_[maplog]"
            cmd = 'ls  %s  ' % (dir[-1])
            print(cmd)
            result = method.tk_Connect_service(cmd=cmd)
            i = ' '.join(result.split())
            s = i.split(' ')
            if s != '':
                for k in s:
                    listbox.insert('end', k)
                print('返回上一级后的dir', dir)
                labelpath.config(text=dir[-1])
            else:
                listbox.insert('end', '没有查询到文件')
combobox选择需要查看的key
    def serch(self):
        p = labelpath.cget('text')
        cmd = 'cat   %s ' % p
        result = method.tk_Connect_service(cmd=cmd)
        r = json.loads(result)
        k = combobox.get()
        textview.delete(0.0, END)
        d1 = r[k]
        y = json.dumps(d1, sort_keys=True, indent=4, separators=(',', ': '), ensure_ascii=False)
        textview.insert(INSERT, y)
        textview.see(END)

?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-13 11:43:06  更:2022-05-13 11:44:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:01:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码