import tkinterimport tkinter.ttkimport osclass TreeWindows: def __init__(self): self.win=tkinter.Tk() self.tree=tkinter.ttk.Treeview(self.win,height=500) #樹狀 self.ysb=tkinter.ttk.Scrollbar(self.win,orient="vertical",command=self.tree.yview()) #y捲軸 self.xsb = tkinter.ttk.Scrollbar(self.win, orient="horizontal",command=self.tree.xview()) #x捲軸 self.tree.configure(yscroll=self.ysb.set,xscroll=self.xsb.set) #y捲軸關聯 self.tree.grid(row=0,column=0) self.tree.heading("#0",text="Path",anchor="w") #初始化頭部,表頭 west靠近西方 self.tree.bind("<<TreeviewSelect>>",self.gosel) #事件(選中)綁定 filepath="C:\\aa\\Desktop" #路徑 root=self.tree.insert("","end",text=filepath,open=True) #插入一個節點 self.loadtree(root,filepath) #遞迴 self.e=tkinter.StringVar() self.entry=tkinter.Entry(self.win,textvariable=self.e) self.e.set("請選擇檔案") self.entry.grid(row=0, column=2) self.ysb.grid(row=0,column=1,sticky="ns") self.xsb.grid(row=1, column=0,sticky="ew") self.win.grid() #表格展示 def loadtree(self,parent,rootpath): for path in os.listdir(rootpath): #遍曆目前的目錄 abspath=os.path.join(rootpath,path) #串連成絕對路徑 oid=self.tree.insert(parent,'end',text=abspath,open=False)#插入樹枝 if os.path.isdir(abspath): self.loadtree(oid,abspath) #遞迴回去 def gosel(self,event): self.select=event.widget.selection() #擷取所選的項(可能是多項,所以要for迴圈) for idx in self.select: print(self.tree.item(idx)["text"]) self.e.set(self.tree.item(idx)["text"]) def show(self): self.win.mainloop()mytree=TreeWindows()mytree.show()