左边的frame为显示tree(目录),右面frame顶部窗口显示您所点的目录名或文件名,底部窗口显示py文件内容,显示py文件内容功能未实现,老师没有讲,本人也没有研究出来,,,,,
treeFile.py
import tkinter
from treeWindows import TreeWindows
from infoWindows import InfoWindows
win = tkinter.Tk()
win.title("sunck")
win.geometry("600x400+200+50")
path = "D:\\黑客\\python绝技heike\\sublime"
# 创建一个对象
infoWin = InfoWindows(win)
treeWin = TreeWindows(win, path, infoWin)
win.mainloop()
treeWindows.py
import tkinter
from tkinter import ttk
import os
class TreeWindows(tkinter.Frame):
def __init__(self, master, path, otherWin):
frame = tkinter.Frame(master)
frame.grid(row = 0, column = 0)
self.otherWin = otherWin
self.tree = ttk.Treeview(frame)
self.tree.pack(side = tkinter.LEFT, fill = tkinter.Y)
# 将路径上的最后一级分离出来,windows系统无效
# print(os.path.splitext(path))
tempPath = self.getLastPath(path)
root = self.tree.insert("", "end", text = tempPath,
open = True, values = (path))
# 上级目录是root,path是当前路径
self.loadTree(root, path)
# 滚动条 Scrollbar滚动条 command命令 set设置
self.sy = tkinter.Scrollbar(frame)
self.sy.pack(side = tkinter.RIGHT, fill = tkinter.Y)
self.sy.config(command = self.tree.yview)
self.tree.config(yscrollcommand = self.sy.set)
# 绑定事件
# 意思是换一个它就响应了func
self.tree.bind("<<TreeviewSelect>>", self.func)
# 上面bind绑定的时候,要给一个event事件
def func(self, event):
# selection 选择
# widget 触发这个事件的小固件
self.v = event.widget.selection()
for sv in self.v:
# 文件类型为text
file = self.tree.item(sv)["text"]
self.otherWin.ev.set(file)
# print(file)
apath = self.tree.item(sv)["values"][0]
print(apath)
def loadTree(self, parent, parentPath):
# isdir遍历父目录所有文件
for fileName in os.listdir(parentPath):
# 绝对路径
# join方法 是把路径和文件名合起来
absPath = os.path.join(parentPath, fileName)
# 插入树枝
# end是往后填,给当前的数据追加
treey = self.tree.insert(parent, "end",
text = self.getLastPath(absPath), values = (absPath))
# 判断是否是目录
# 如果是目录再去添加树枝
if os.path.isdir(absPath):
self.loadTree(treey, absPath)
def getLastPath(self, path):
pathList = os.path.split(path)
return pathList[-1]
infoWindows.py
import tkinter
from tkinter import ttk
import os
# info信息
class InfoWindows(tkinter.Frame):
def __init__(self, master):
frame = tkinter.Frame(master)
# gird 网格
frame.grid(row = 0, column = 1)
# Variable 变量 绑定变量法
self.ev = tkinter.Variable()
# 请求entry
self.entrey = tkinter.Entry(frame, textvariable = self.ev)
self.entrey.pack()
self.txt = tkinter.Text(frame)
self.txt.pack()