我正在用TkInter编写一个Python应用程序。在某些时候,应用程序(root
)会显示一个对话框(dlg
,它是Toplevel
)。为了使对话模态,我使用以下代码:
dlg.focus_set()
dlg.grab_set()
dlg.transient(root)
root.wait_window(dlg)
这确实取消了对话框外的“自定义”事件(如主应用程序窗口中的小部件),但它不会取消窗口管理器事件,因此例如单击主应用程序窗口会使其重新获得焦点,它可以移动,调整大小 - 甚至关闭! - “模态”对话框仍处于打开状态。
如何使对话框成为模态,以便在对话框处于活动状态时,主应用程序窗口的窗口管理器事件也会暂停?
我在Ubuntu 15.04上使用Python 3.4.3。
答案 0 :(得分:0)
你可以使用root.grab_set_global(),如下例所示:
reduce()
答案 1 :(得分:0)
尝试这种方式:
dlg.focus_set()
dlg.grab_set()
dlg.transient(root)
dlg.wait_window(dlg)