Tkinter菜单小部件:隐藏菜单的命令

时间:2015-04-20 10:28:10

标签: python-2.7 tkinter submenu

我的问题如下

我有一个带有一些菜单的应用程序,根据执行的任务,可以配置其选项,即激活或取消激活某些菜单选项,以防止用户调用会导致应用程序出现意外行为的内容

问题是,当应用程序配置菜单时,用户可以点击菜单并保持打开状态。实际上菜单已更改,但即使鼠标离开菜单,菜单也会冻结并仍然打开。但是,我注意到如果我用鼠标点击应用程序外部,菜单会有效关闭,一切都恢复正常,但用户可能不会意识到这一点,并且可能会卡住。无论如何,这不是一个有趣的行为。我认为这是菜单小部件的错误,但我不确定。

我无法禁用所有菜单,因为实际上应该有可用的选项。一个解决方案是在配置他之后隐藏de menu的命令,避免这种情况。我尝试使用“unpost”方法,但没有任何反应。

有这种可能性或任何解决方法可以解决我的问题吗?

我留下上述菜单的一些图片来说明我的问题:

正常

Normal

禁用某些选项

Disabling some options

“bug”情况

the "bug" situation

1 个答案:

答案 0 :(得分:2)

幸运的是,我认为我找到了这种不端行为的根源。配置菜单后,将显示另一个窗口(自定义警告消息)。为了强制用户注意该消息,重点是它,并且应用程序被迫等待(使用wait_window“方法),直到用户关闭它。”wait_window“导致问题,因为它是不允许主循环隐藏菜单,因为它等待关闭警告窗口,但不知何故,如果没有菜单隐藏,就不可能关闭窗口。这是一种“优先冲突”的情况。

enter image description here

解决方案没有使用该方法,菜单会根据需要关闭。

我认为这可能对将来遇到这个麻烦的人有用