python遍历目录树tkinter_python之tkinter使用-文件系统遍历

1 #tkinter:文件系统遍历

2 importtkinter as tk, os3 from time importsleep4

5

6 classDirList(object):7 def __init__(self, initdir=os.curdir):8 self.top =tk.Tk()9 self.top.title('查找')10

11 self.top.geometry('400x500') #设置窗口大小

12 self.label = tk.Label(self.top, text='文件列表', font=('宋体 -16 bold'))13 self.label.pack()14

15 #StringVar:字符串变量,特点是跟踪变量变化,及时显示在界面上

16 self.cwd =tk.StringVar(self.top)17 self.cwd.set(initdir)18

19 #当前目录显示标签

20 self.dirl = tk.Label(self.top, fg='blue', font=('Helvetica -14 bold'))21 self.dirl.pack()22

23 #新建框体容器,存放文件列表和滚动条

24 self.dirfm =tk.Frame(self.top)25 #滚动条

26 self.dirsb =tk.Scrollbar(self.dirfm)27 self.dirsb.pack(side=tk.RIGHT, fill=tk.Y)28 #列表框

29 self.dirs = tk.Listbox(self.dirfm, height=23, width=60,30 font=('Helvetica -14'),31 yscrollcommand=self.dirsb.set)32 #绑定setDirAndGo函数

33 self.dirs.bind('', self.setDirAndGo)34 #滑动框与列表关联

35 self.dirsb.config(command=self.dirs.yview)36 self.dirs.pack(side=tk.LEFT, fill=tk.X)37 self.dirfm.pack(fill=tk.BOTH)38

39 #输入框

40 self.dirn = tk.Entry(self.top, width=60, font=('Helvetica -14'),41 textvariable=self.cwd)42 #监听回车事件,绑定doLS函数,函数必须要有event参数

43 self.dirn.bind('', self.doLS)44 self.dirn.pack(fill=tk.BOTH)45

46 #功能按钮框架包括三个按钮:清除、查询和退出。

47 self.bfm =tk.Frame(self.top)48 self.clr = tk.Button(self.bfm, text='清除', width=6, command=self.clrDir,49 activeforeground='white', activebackground='blue')50 self.ls = tk.Button(self.bfm, text='查询', width=6, command=self.doLS,51 activeforeground='white', activebackground='green')52 self.quit = tk.Button(self.bfm, text='退出', width=6, command=self.top.quit,53 activeforeground='white', activebackground='red')54 self.clr.pack(side=tk.LEFT, fill=tk.BOTH)55 self.ls.pack(side=tk.LEFT, fill=tk.BOTH)56 self.quit.pack(side=tk.LEFT, fill=tk.BOTH)57 self.bfm.pack()58

59 def clrDir(self, ev=None):60 '''清空文件路径输入框'''

61 self.cwd.set('')62

63 def setDirAndGo(self, ev=None):64 '''设置文件路径并查询'''

65 self.last =self.cwd.get()66 #选中项背景默认为红色,后续修改为蓝色

67 self.dirs.config(selectbackground='red')68 #获取文件列表中选择项,没有选则输入框设置为当前目录路径

69 try:70 #获取目录列表中选中的文件名

71 check =self.dirs.get(self.dirs.curselection())72 except:73 print("没有文件或文件错误!")74 return

75

76 if notcheck:77 check =os.curdir78 self.cwd.set(check)79 self.doLS()80

81 def doLS(self, event=''):82 '''

83 查询文件路径84 :param event:输入框回车事件触发参数85 :return:无86 '''

87 error = ''

88 tdir =self.cwd.get()89 if nottdir:90 tdir =os.curdir91

92 #判断输入框中文件是否存在

93 if notos.path.exists(tdir):94 error = tdir + ': no such file!'

95 #若文件存在,再判断是否是目录

96 elif notos.path.isdir(tdir):97 error = tdir + 'is not directory!'

98

99 iferror:100 '''出现错误则提示在输入框内,2秒后还原'''

101 self.dirn.config(fg='red') #输入框提示文字变为红色

102 self.cwd.set(error)103 self.top.update()104 sleep(2)105 if not (hasattr(self, 'last') andself.last):106 '''使用hasattr函数判断对象是否含有last属性或方法'''

107 self.last =os.curdir108 self.cwd.set(self.last)109 self.dirs.config(selectbackground='LightSkyBlue')110 self.dirn.config(fg='black') #输入框文字颜色还原

111 self.top.update()112 return

113

114 self.cwd.set('FETCHING DIRECTORY CONTENTS...')115 self.top.update()116

117 '''目录列表框操作'''

118 self.dirs.delete(0, tk.END) #清空目录列表

119 #self.dirs.insert(tk.END, os.curdir) # 添加当前目录"."

120 self.dirs.insert(tk.END, os.pardir) #添加上级目录".."

121

122 '''获取指定目录下的文件,在列表控件展示'''

123 dirlist =os.listdir(tdir)124 dirlist.sort()125 os.chdir(tdir) #改变目录到指定路径

126 for eachFlie indirlist:127 self.dirs.insert(tk.END, eachFlie)128 self.cwd.set(os.getcwd()) #在输入框中显示当前绝对路径

129 self.dirl.config(text=os.getcwd()) #上方标签显示当前路径

130 self.dirs.config(selectbackground='LightSkyBlue') #选中时背景色为蓝色

131 self.last = self.cwd.get() #记录最后一次路径

132

133

134 defmain():135 DirList('D:\\')136 tk.mainloop()137

138

139 if __name__ == '__main__':140 main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值