在单击按钮之前执行 Tkinter 按钮命令
Tkinter Button command getting executed before clicking the button
我创建了一个框架,因为我有两个浏览按钮,我想浏览两个以“.txt”扩展名结尾的文件并将其打印在屏幕上。
在我的场景中,浏览功能在按下框架上的按钮之前被调用。我期待它应该在我按下按钮时调用。附上完整代码。请有人纠正我我做错了什么。
from Tkinter import *
import tkFileDialog as filedialog
global filename
root = Tk()
def browsefunc(entry):
entry = filedialog.askopenfilename(filetypes=[("Text files","*.txt")])
print entry
browsebutton1 = Button(root, text="Browsefile1", command=browsefunc("TXT_file1"))
browsebutton1.pack()
browsebutton2 = Button(root, text="Browsefile2", command=browsefunc("TXT_file2"))
browsebutton2.pack()
root.mainloop()
因为您正在向 browsefunc
函数传递参数或参数,所以该函数在启动时运行。这是因为 python 运行代码的方式。您可以使用 lambda
表达式来修复此
browsebutton1 = Button(root, text="Browsefile1", command=lambda: browsefunc("TXT_file1"))
我创建了一个框架,因为我有两个浏览按钮,我想浏览两个以“.txt”扩展名结尾的文件并将其打印在屏幕上。
在我的场景中,浏览功能在按下框架上的按钮之前被调用。我期待它应该在我按下按钮时调用。附上完整代码。请有人纠正我我做错了什么。
from Tkinter import *
import tkFileDialog as filedialog
global filename
root = Tk()
def browsefunc(entry):
entry = filedialog.askopenfilename(filetypes=[("Text files","*.txt")])
print entry
browsebutton1 = Button(root, text="Browsefile1", command=browsefunc("TXT_file1"))
browsebutton1.pack()
browsebutton2 = Button(root, text="Browsefile2", command=browsefunc("TXT_file2"))
browsebutton2.pack()
root.mainloop()
因为您正在向 browsefunc
函数传递参数或参数,所以该函数在启动时运行。这是因为 python 运行代码的方式。您可以使用 lambda
表达式来修复此
browsebutton1 = Button(root, text="Browsefile1", command=lambda: browsefunc("TXT_file1"))