我如何从函数访问top level widget
,用作按钮或菜单的命令?可以使用command=lambda: f(params)
在此命令函数中添加params,但我认为它可能更容易。
答案 0 :(得分:3)
你可以使用lambda,就像你提到的那样:
command=lambda: f(params)
或者你可以关闭:
def make_callback(params):
def callback():
print(params)
return callback
params = 1,2,3
button = tk.Button(master, text='Boink', command=make_callback(params))
或者,您可以使用类并传递绑定方法。 self
的属性可以包含您必须作为参数传递的信息。
import Tkinter as tk
class SimpleApp(object):
def __init__(self, master, **kwargs):
self.master = master
self.params = (1,2,3)
self.button = tk.Button(master, text='Boink', command=self.boink)
self.button.pack()
def boink(self):
print(self.params)
root = tk.Tk()
app = SimpleApp(root)
root.mainloop()