我已经创建了一个非常简单的应用程序,它提出了一个easygui entrybox()和无限期地继续循环这个,因为它接收用户输入。

我可以使用取消按钮,因为这将返回无退出该程序,但我也希望能够使用标准的“关闭”按钮以退出该程序。 (即在Windows窗口的右上角,在Mac窗口的左上角)此按钮目前不做任何事。

以看看easygui模块我发现这个行:

root.protocol('WM_DELETE_WINDOW', denyWindowManagerClose )

这似乎是罪魁祸首。我没有使用TKinter专家,但我大概可以工作,如何改变这个处理程序行事我想要的方式。

不过,我宁愿关于与easygui模块不乱,有没有办法覆盖从我的主脚本这一行为,并有关闭按钮或者关闭程序直接或返回None?

有帮助吗?

解决方案

这将要求改变easygui模块,是的。我会得到它修改!

**我在一个电子邮件已发送到EasyGUI创建者地名释义此[下午12点12分,一月23/09]

**我只想说,这种情况发生改变的可能性 - 如果有的话,我怀疑 - 是非常微小的。你看,EasyGUI旨在创建图形用户界面的简单,独立的方式。我认为,这除了不会帮助任何以来,特别是界面非常连续的,所以这将是混乱的新用户。 [下午12点19分,一月23/09]

**本EasyGUI创作者在回答我的电子邮件这样说:

  

这是easygui对话框应该永远不会退出   该应用程序 - 它应该回传   一个值给调用者,让   呼叫者决定做什么。

     

但是,这是一个有趣的想法。   而不是简单地忽略了一个点击   “关闭”图标,easygui盒能   返回相同的值,一个点击   “取消”按钮,将返回。   我会反省这个。

     

- 史蒂夫FERG

我认为,这是至少进步。 [下午二点40,一月23/09]

其他提示

我不知道的权利,但你尝试过这样的事情:

root.protocol('WM_DELETE_WINDOW',  self.quit)

root.protocol('WM_DELETE_WINDOW',  self.destroy)

我还没有尝试,但谷歌像"Tkinter protocol WM_DELETE_WINDOW"

我找到了解决办法,答案是下面的选择框,当他定义了一些功能(您也可以只找到denyWindowManagerClose)并转到他定义它。只是删除它,并把这个代码在它的地方。

    def denyWindowManagerClose():
#------------------------------------------------------------------
#  Changed by ProgrammingBR
#  Enables the user to close the window without entering a value
#  Youtube URL: https://www.youtube.com/channel/UCTZh6kWz_iYACNE6Jcy2lhw
#------------------------------------------------------------------
    global __enterboxText
    __enterboxText = None
    boxRoot.quit()

您可以创建一个备份文件,但这将所有箱子的工作,在这里一边给来自这将无法工作的建议,我尝试了他们。如果你想看到我的工作(这是葡萄牙语,但是你可以按照它)只要到YouTube频道,我会很快把它上传并张贴在这里的链接了一个视频:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top