【问题标题】:Tkinter button command activates when program is run [duplicate]程序运行时Tkinter按钮命令激活[重复]
【发布时间】:2015-03-24 10:54:02
【问题描述】:

在这里找到一个类似的帖子:Tkinter button command activates upon running program?

但是我不能完全理解答案是一个相对较新的问题。

def Destroy(var):
    var.destroy()

是不是我也想调用的函数。

exit_button = tk.Button(master, text = "Exit", command = Destroy(master))

但是,当我运行该程序时,它会立即关闭并显示错误消息:

_tkinter.TclError: can't invoke "button" command:  application has been destroyed

我想要的是程序在按下按钮后退出,我将使用相同的功能来销毁其他小部件等,因此它需要成为一个功能。

如有需要,将进一步澄清。

【问题讨论】:

    标签: python tkinter destroy


    【解决方案1】:

    当您定义 exit_button 时,您实际上是在调用 Destroy,因此您需要传递一个函数或 lambda 以防止传递函数调用。

    exit_button = tk.Button(master, text = "Exit", command = lambda: Destroy(master))
    

    【讨论】:

    • 感谢您的回答,您认为您可以解释更多有关 lambda 的信息吗?我以前从未遇到过他们。或者给我一个很好的解释。
    • Lambda 是很短的函数,非常适合像上面那样传递 sn-ps。基本上,在您的代码中,您实际上是销毁了主服务器,而在我的代码中,您传递了一个将销毁主服务器的函数。
    • 你现在明白了吗?
    • 如果您需要更多说明 lambda 是什么,请点击此处。
    • 我的代码对你有用吗?
    猜你喜欢
    • 2011-04-11
    • 1970-01-01
    • 2014-01-10
    • 2018-12-19
    • 2019-05-10
    • 2017-12-23
    • 2016-01-28
    • 1970-01-01
    相关资源
    最近更新 更多