python - 如何在 tkinter 中创建模态对话框?

标签 python python-3.x mfc tkinter

我有一个运行一些嵌入式 Python 脚本的 MFC 应用程序。我正在尝试使这个嵌入式脚本创建的对话框之一成为模态,但我没有取得太大的成功。

谁能告诉我制作模态对话框的方法?我需要为此使用 Windows 函数还是仅 Tk 或 Python 函数就足够了?

根据我在 Google 上搜索的内容,以下功能组合应该可以发挥神奇作用,但它们似乎并不像我预期的那样工作:

focus_set()

grab_set()

transient(parent)

最佳答案

grab_set 是使窗口成为“应用程序模态”的正确机制。也就是说,它从同一应用程序中的所有其他窗口获取所有输入(即:同一进程中的其他 Tkinter 窗口),但它允许您与其他应用程序交互。

如果您希望您的对话框是全局模式的,请使用 grab_set_global。这将接管整个系统的所有 键盘和鼠标输入。使用此功能时必须格外小心,因为如果您有一个阻止您的应用程序释放抓取的错误,您很容易将自己锁在计算机之外。

当我需要这样做时,在开发过程中,我会尝试编写一个防弹故障保护程序,例如一个定时器,它会在固定的时间后释放抓取。

关于python - 如何在 tkinter 中创建模态对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16803686/

相关文章:

c++ - CMFCMenuBar 一种 CMFCToolBar 的透明度

python - 使用 Suds 的端口类型异常

Python删除临时文件报错--仍在使用

jquery - web2py 将 python 嵌入到 jQuery 中

python - QListWidget 所选项目按行排序

c# - 如何将命名管道字符串从非托管代码空间发送到托管代码空间?

python - 如何将压缩列表项相互相乘?

Python abc.abstractproperty 兼容性

python - 如何匹配 JSON 文件中的日期加任意时间?

c++ - 无法将 lpCmdLine 参数分配给 char* 指针