我创建了一个带有浏览按钮的小gui,用户必须单击该按钮才能打开目录选择对话框。用户选择一个目录后,我想在gui上以简单文本的形式显示所选路径。
我该怎么做?如果我把
txt_path = tk.Label(master=root,textvariable=path)
txt_path.grid(row=1, column=0)
在browsebutton函数中,所选目录中没有显示任何文本,只有打印可以工作。
如果我放
txt_path = tk.Label(master=root,textvariable=path)
txt_path.grid(row=1, column=0)
在browse_button功能之外,则出现一个错误:
txt_path=tk.Label(master=root,textvariable=path(name错误:name未定义"路径">
因为路径变量尚未定义-使路径变量全局化的正确方法是什么?我的代码:
from tkinter import filedialog
import tkinter as tk
def browse_button():
path = filedialog.askdirectory()
if len(path) > 0:
print('OK: ' + path)
# txt_path = tk.Label(master=root,textvariable=path)
# txt_path.grid(row=1, column=0)
else:
print('ERROR')
###########################################################
# GUI
root = tk.Tk()
root.geometry("650x400")
btn_Browse = tk.Button(text="Browse", command=browse_button)
btn_Browse.grid(row=0, column=0)
txt_path = tk.Label(master=root,textvariable=path)
txt_path.grid(row=1, column=0)
root.mainloop()
不需要全局变量。问题是,您试图将标签的文本定义为一个变量,该变量可能会保持未定义状态,因为它是在主函数之外首次定义的。我修复了你的代码:
from tkinter import filedialog
import tkinter as tk
def browse_button():
path = filedialog.askdirectory()
if len(path) > 0:
print('OK: ' + path)
txt_path = tk.Label(master=root, text=path)
txt_path.grid(row=1, column=0)
else:
print('ERROR')
###########################################################
# GUI
root = tk.Tk()
root.geometry("650x400")
btn_Browse = tk.Button(text="Browse", command=browse_button)
btn_Browse.grid(row=0, column=0)
root.mainloop()
我再次写下了您添加注释的行,做了一点更改——我将txt_path
标签的属性textvariable
更改为text
。