效果就是将一个目录中的目录或内容用tkinter的树状数据的界面显示出来,我采用了深度遍历,
如果不是很了解的可以看我上一条博客,关于目录的三种遍历方式http://blog.csdn.net/qq_38105596/article/details/76402732
效果图如:
import tkinter
from tkinter
import ttk
import os
win
= tkinter.Tk()
win.title(
"我是文件夹")
win.geometry(
"400x400+200+10")
tree
= ttk.Treeview(win)
tree.pack()
# tkinter的树状插入目录的语法
# treeF1 = tree.insert("", 0, "中国", text="中国ch", values=(1))
# 深度遍历
def getFiles(
path)
:
stack
= []
stack.append(
path)
tdir
= ""
pathList
= []
while len(stack)
!= 0:
# 获取文件路径
dirPath
= stack.pop()
# 获取文件列表
dirList1
= os.listdir(dirPath)
# t1 = ""
t
= True
for fileName
in dirList1
:
# 每个文件或目录的绝对路径
fileAbspath
= os.path.join(dirPath, fileName)
if os.path.isdir(fileAbspath)
:
print(
"目录:", fileName)
pathList.append(fileAbspath)
for sk
in pathList
:
print(
"sk = ", sk)
if fileAbspath
== os.path.join(sk, fileName)
:
print(
"========")
print(fileAbspath)
tx = tree.insert(sk,
2, fileAbspath,
text=fileName)
t
= False
break
if t
:
t2 = tree.insert(
"",
1, fileAbspath,
text=fileName)
stack.append(fileAbspath)
# print("目录:",fileAbspath)
else:
print(
"文件:", fileName)
print(
"tdir = ", tdir)
print(
"fileAabspath = ", fileAbspath)
print(
"join = ", os.path.join(tdir, fileName))
for sk1
in pathList
:
print(
"sk1 = ", sk1)
if fileAbspath
== os.path.join(sk1, fileName)
:
print(
"========")
print(fileAbspath)
tx = tree.insert(sk1,
2, fileAbspath,
text=fileName)
t
= False
break
if t
:
t2 = tree.insert(
"",
1, fileAbspath,
text=fileName)
getFiles(
r"写上自己要遍历的目录的绝对路径")
win.mainloop()