【问题标题】:Stop user from changing focus(Tkinter)阻止用户改变焦点(Tkinter)
【发布时间】:2012-11-10 14:56:49
【问题描述】:

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

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    使窗口瞬态并不是整个解决方案。将焦点集中到自身的窗口称为“模态”窗口。关键是“grab_set()”方法。您可以拥有强制应用程序焦点或强制整个窗口系统焦点的模式窗口。

    当您结合“模态”搜索“Tkinter”时,您可以找到更多信息。一击:http://tkinter.unpythonic.net/wiki/ModalWindow

    【讨论】:

    • 似乎是一个更完整的解决方案。 +1
    • pythonware 文档中Chapter 10. Dialog Windows 的开头附近有对grab_set()method 作用的描述。还有更多有用的信息,包括对话框支持类Dialog,您可以在创建自己的对话框时继承。
    【解决方案2】:

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

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

    查看this page for more details

    【讨论】:

    • 这似乎是一个解决方案。谢谢!
    • @Andrew:如果您认为值得,通常也会对您接受的答案进行投票。
    • @martineau 他马上就做了,其他人投了反对票。或者我猜他收回了他的赞成票。失去 2 代表,如果这是任何迹象。无论哪种方式,另一个答案更好。不知道我是否应该合并两者,因为地雷已经接受了。
    • 顺便说一句,链接已经失效了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-22
    • 2013-11-16
    • 2023-04-01
    • 2020-04-21
    • 2020-12-12
    • 1970-01-01
    相关资源
    最近更新 更多