【发布时间】:2016-12-02 14:02:29
【问题描述】:
我对 python 和 tkinter 还很陌生。我正在使用 python 2.7 和 tkinter 8.5。
我试图在按下退出键时退出我的应用程序,但我遇到了一些奇怪的行为:
当我将 root.destoy 作为参数传递给 bind() 时,应用什么也不做:
root = Tk()
...
root.bind('<Escape>', root.destroy)
但如果我定义一个调用 root.destroy() 的函数并将其作为参数传递给 bind,一切都会按预期工作:
def exit_app():
root.destroy()
root.bind('<Escape>', exit_app)
如果我像这样传递一个 lambda,它也可以工作:
root.bind('<Escape>', lambda f: root.destroy())
谁能解释这里发生了什么?
谢谢
【问题讨论】:
-
我很难相信它可以与
exit_app一起使用。这应该会给出与直接绑定到 root.destroy 时完全相同的错误。 -
@furas 对不起,错字只存在于这篇文章中(我没有复制和粘贴,这只是一个简化的例子)。马上编辑帖子。谢谢
-
@BryanOakley 为什么你觉得难以置信?它在我的机器上运行
-
在控制台中运行时是否收到错误消息?你应该 -
bind用一个参数执行函数,你定义exit_app()不带参数 -
如果它工作正常,请创建一个Minimal, Complete and Verifiable Example。发布“简化示例”还不够好,因为您的简化示例不能很好地代表您的实际代码。
标签: python python-2.7 tkinter