Python 如何在非主线程里实现一个弹窗式对话框?

2023-10-26 21:18:15 +08:00
 ignor

现在有一个 python 程序,主线程在跑 flask ,同时运行了若干个子线程,这些子线程中如果有异常,需要做个弹框提示,点击 OK 或 Cancel 决定是否发送错误报告。

本想着直接拿 tkinter 简单弄一下就完事,但这些 GUI 框架似乎都只能在主线程里面跑 mainloop…… 如果另起一个进程来运行对话框,又涉及进程间通信,是不是有点小题大做了?想知道有没有简单点的办法呢?

2347 次点击
所在节点    Python
21 条回复
ysc3839
2023-10-28 22:42:26 +08:00
Windows 的话直接开多个线程显示即可,Linux 我不清楚,macOS 是限制只能在主线程使用 UI 相关 API 的。
因此如果只是为了显示个通知啥的,跨平台的方案是直接用一个独立的进程。
另外 macOS 还有个限制,就是 fork 后如果没有 exec ,那包括 UI 在内的很多系统 API 都不可使用。
@4kingRAS Win32 控件是允许不同线程进行更新的,因为控制都是通过窗口消息进行的,而窗口消息处理函数本身会保证只会在窗口所在线程执行。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/985783

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX