1

我如何访问top level widget用作按钮或菜单命令的功能?可以通过使用在此命令函数中添加参数command=lambda: f(params),但我认为它可能更容易。

4

1 回答 1

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()
于 2013-05-26T21:48:15.437 回答