【发布时间】:2012-11-10 14:56:49
【问题描述】:
如何构建一个对话框,将焦点从父窗口移开并强制用户输入?除非用户提供输入或按下取消按钮,否则父窗口将无法访问。所以它是一种消息框,但有一个输入字段。我找到了创建顶级窗口的顶级方法,但找不到阻止用户访问父窗口的方法。谢谢
【问题讨论】:
如何构建一个对话框,将焦点从父窗口移开并强制用户输入?除非用户提供输入或按下取消按钮,否则父窗口将无法访问。所以它是一种消息框,但有一个输入字段。我找到了创建顶级窗口的顶级方法,但找不到阻止用户访问父窗口的方法。谢谢
【问题讨论】:
使窗口瞬态并不是整个解决方案。将焦点集中到自身的窗口称为“模态”窗口。关键是“grab_set()”方法。您可以拥有强制应用程序焦点或强制整个窗口系统焦点的模式窗口。
当您结合“模态”搜索“Tkinter”时,您可以找到更多信息。一击:http://tkinter.unpythonic.net/wiki/ModalWindow
【讨论】:
grab_set()method 作用的描述。还有更多有用的信息,包括对话框支持类Dialog,您可以在创建自己的对话框时继承。
我并不肯定,但看起来如果你创建一个继承自 TopLevel 的新类,但将其附加到父类,然后调用 self.transient(parent),你应该有一些接近你想要的东西。我假设它也会阻止对父窗口的输入。
主要的诡计是在构造函数中完成的;首先,使用瞬态 将此窗口与父窗口(通常是应用程序 启动对话框的窗口)。对话框不会出现 作为窗口管理器中的图标(它不会出现在任务栏中 例如,在 Windows 下),如果您将父窗口图标化,则 对话框也将被隐藏
【讨论】: