阻止用户更改焦点(Tkinter)

时间:2012-11-10 14:56:50

标签: python tkinter

如何构建一个从父窗口中取走焦点并强制用户输入的对话框?除非用户提供输入或按下取消按钮,否则将无法访问父窗口。所以这是一个消息框,但有一个输入字段。我找到了创建顶级窗口的顶级方法,但我找不到阻止用户访问父窗口的方法。感谢

2 个答案:

答案 0 :(得分:5)

使窗口瞬态不是整个解决方案。强制对焦于自身的窗口称为“模态”窗口。关键是“grab_set()”方法。您可以使用模式窗口强制应用程序的焦点,或者强制整个窗口系统的焦点。

当您将“Tkinter”与“模态”结合使用时,您可以找到更多内容。一击:http://tkinter.unpythonic.net/wiki/ModalWindow

答案 1 :(得分:1)

我不是肯定的,但看起来如果你创建一个继承自TopLevel的新类但是将它附加到父级,那么调用self.transient(parent)你应该有一些接近你的东西喜欢。我假设它也会阻止对父窗口的输入。

  

主要技巧是在构造函数中完成的;首先,使用瞬态   将此窗口与父窗口(通常是应用程序)相关联   从中启动对话框的窗口。该对话框不会显示   作为窗口管理器中的图标(它不会出现在任务栏中   例如,在Windows下,如果你图标化父窗口,那么   对话框也将被隐藏

查看this page for more details