15.千峰教育tkinter项目实战----自制随堂笔记

本文介绍了一个使用Tkinter库制作的Python项目,该应用展示了一个左侧目录树视图,右侧则分别显示所选目录或文件的名称和内容。虽然应用目前无法显示.py文件的内容,但已实现了基本的目录导航功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

左边的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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值