我想要一个 Python 可访问的函数show_image(...)
,它启动一个相当简单的图像查看器,其中图像被指定为(例如)一个 NumPy 数组。重要的是,我希望这个函数不要阻塞,而是让脚本继续执行,同时保持窗口的交互性。
我意识到巨大的设计缺陷和被称为全局解释器锁的所有痛苦都会阻止任何基于 Python 的 GUI 与主线程中的 Python 代码并行运行,所以我显然需要启动一个释放 GIL 并在 C/C++ 中执行所有操作的线程。
我很乐意用 Cython(或手写的 C 扩展模块)包装这样的东西,但我正在寻找合适的 GUI 解决方案。它应该是跨平台的,并且易于与 Cython 扩展一起构建(后者似乎排除了 Qt/qmake/等)。
重要的是,我希望能够以这种方式按需启动多个窗口。似乎大多数 GUI 工具包都有一些run()
类似的函数,需要在主线程程序的末尾调用main()
,这让我不太清楚如何多次启动一个窗口。我想我每次都可以启动一个单独的 GUI 事件循环,但这似乎是灾难的根源(我记得,至少 GTK+ 明确不支持它)。
我还要说fork()
'ing 不是一种选择。