如何解决使用tkinter文本小部件从“浏览”按钮显示用户选择的目录路径
我一直试图链接用户选择的文件夹路径,以便将其放置在右侧的文本字段内。我尝试了几种不同的方法都没有用。这是到目前为止我得到的。任何帮助是极大的赞赏。这是我的位置。
from tkinter import *
from tkinter import filedialog
from tkinter import messagebox
import tkinter as tk
class ParentWindow(Frame):
def __init__(self,master,*args,**kwargs):
Frame.__init__(self,**kwargs)
self.master = master
self.master.minsize(550,175)
self.master.maxsize(550,175)
self.master.title("Check Files")
self.master.configure(bg="#F0F0F0")
#DEFINE BUTTONS
self.btn_browse1 = tk.Button(self.master,width=12,height=1,text="Browse...",command = lambda:
browse())
self.btn_browse1.grid(row=2,column=0,padx=(15,0),pady=(40,sticky=W)
self.btn_browse2 = tk.Button(self.master,command = lambda:
browse())
self.btn_browse2.grid(row=3,pady=(10,sticky=W)
self.btn_checkForFiles = tk.Button(self.master,height=2,text="Check for files...",command = lambda: check())
self.btn_checkForFiles.grid(row=4,sticky=W)
self.btn_close = tk.Button(self.master,text="Close Program")
self.btn_close.grid(row=4,column=1,sticky=S+E)
#DEFINE TEXT BOXES
self.txt_browse1 = tk.Entry(self.master,width=65,text="")
self.txt_browse1.grid(row=2,padx=(25,pady=(35,sticky=W)
self.txt_browse2 = tk.Entry(self.master,text="")
self.txt_browse2.grid(row=3,pady=(5,sticky=W)
def browse():
dirname = filedialog.askdirectory()
if __name__ == "__main__":
root = tk.Tk()
App = ParentWindow(root)
root.mainloop()
解决方法
您应该使browse()
函数成为ParentWindow类下的方法,以便它可以访问窗口的所有小部件。然后,您只需要在输入小部件中插入目录名称即可。更妙的是,为每个浏览器提供一个浏览功能:
class ParentWindow(Frame):
###
### Your code
###
def browse1(self):
dirname = filedialog.askdirectory()
self.txt_browse1.delete("1",END)
self.txt_browse1.insert("1",dirname)
def browse2(self):
dirname = filedialog.askdirectory()
self.txt_browse2.delete("1",END)
self.txt_browse2.insert("1",dirname)
请注意,您必须将函数作为方法来调用。因此,将按钮定义中的命令参数更改为self.browse1/2
:
self.btn_browse1 = tk.Button(self.master,width=12,height=1,text="Browse...",command = lambda: self.browse1())
self.btn_browse2 = tk.Button(self.master,command = lambda: self.browse2())
,
一个相对简单的方法是传递与每个browse()
小部件相关联的textvariable
调用Entry
,它要做的就是分配从{{ 1}}。
这是您的代码的修改版本,完全可以做到:
filedialog.askdirectory()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。