Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows和Mac上主机进程中运行的Python显示模式(Tk)对话框 我正在开发一个C++应用程序的Python插件。C++应用程序承载Python解释器。我想显示一个模式框,向用户提问。捕获:它应该是3个带有自定义文本的按钮。它还应在Windows和Mac上工作。对话框必须是模态的,阻止应用程序主窗口的输入,因为它在执行操作之前警告用户_Python_Windows_Macos_Dialog_Modal Dialog - Fatal编程技术网

Windows和Mac上主机进程中运行的Python显示模式(Tk)对话框 我正在开发一个C++应用程序的Python插件。C++应用程序承载Python解释器。我想显示一个模式框,向用户提问。捕获:它应该是3个带有自定义文本的按钮。它还应在Windows和Mac上工作。对话框必须是模态的,阻止应用程序主窗口的输入,因为它在执行操作之前警告用户

Windows和Mac上主机进程中运行的Python显示模式(Tk)对话框 我正在开发一个C++应用程序的Python插件。C++应用程序承载Python解释器。我想显示一个模式框,向用户提问。捕获:它应该是3个带有自定义文本的按钮。它还应在Windows和Mac上工作。对话框必须是模态的,阻止应用程序主窗口的输入,因为它在执行操作之前警告用户,python,windows,macos,dialog,modal-dialog,Python,Windows,Macos,Dialog,Modal Dialog,对于Windows,我可以使用MessageBoxW()和一些Windows API技巧来解决我的问题,但我不确定如何为Mac做到这一点。我认为跨平台解决方案更可取,因此我目前正在考虑使用Tk来实现这一点 我找到了()。它显示一个对话框,但它不是模态的 我这样称呼它: import pymsgbox pymsgbox.confirm(text='text', title='title', buttons=['1', '2', '3']) 有什么办法解决这个问题吗 \u buttonbox()函

对于Windows,我可以使用
MessageBoxW()
和一些Windows API技巧来解决我的问题,但我不确定如何为Mac做到这一点。我认为跨平台解决方案更可取,因此我目前正在考虑使用Tk来实现这一点

我找到了()。它显示一个对话框,但它不是模态的

我这样称呼它:

import pymsgbox
pymsgbox.confirm(text='text', title='title', buttons=['1', '2', '3'])
有什么办法解决这个问题吗

\u buttonbox()
函数接受一个
root
参数,我认为这将使对话框成为模态。然而,我没有一个Tk框架来提供。我在想,如果我可以将Tk“附加”到主机应用程序的主窗口,我就可以解决这个问题

来自
\u buttonbox()
的相关(我认为)片段:

我可以用我的插件添加库,但我不想用一些繁重的框架来调试一个简单的插件

if root:
    root.withdraw()
    boxRoot = tk.Toplevel(master=root)
    boxRoot.withdraw()
else:
    boxRoot = tk.Tk()
    boxRoot.withdraw()

messageFrame = tk.Frame(master=boxRoot)

buttonsFrame = tk.Frame(master=boxRoot)

messageWidget = tk.Message(messageFrame, text=msg, width=400)

boxRoot.deiconify()
boxRoot.mainloop()   # Blocks my thread but not the main window, as MessageBoxW() does.