将可选事件传递给具有默认参数的方法

时间:2018-12-18 04:12:54

标签: python tkinter parameters

我有一个接受可选事件的方法。有时它将由小部件命令调用,因此不会发生事件,有时会被绑定到传递事件的Tkinter窗口的按键按下。但是,当通过按键调用该方法时,不会传递通过lambda函数传递的布尔值-该方法始终输出True值(其默认参数)。我究竟做错了什么?这是可行的示例。

import tkinter as tk

class Main(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.button = tk.Button(self, text="Call Method", command=self.meth)
        self.button.pack()
        self.bind("<Control-s>", lambda var = False : self.meth(var))

    def meth(self, *event, var=True):
        print(event, var)

if __name__ == '__main__':
    main = Main()
    main.mainloop()

1 个答案:

答案 0 :(得分:1)

好,我知道了。新秀错误。按键应该像这样绑定到lambda event

self.bind("<Control-s>", lambda event, var = False : self.meth(var))