我想要一个Python可访问的函数show_image(...)
,它启动一个相当简单的图像查看器,其中图像被指定为(例如)NumPy数组。重要的是,我希望这个函数不要阻塞,但是要让脚本继续执行,同时保持窗口的交互性。
我意识到巨大的设计缺陷和所有被称为全局解释器锁的痛苦将会阻碍在主线程中与Python代码并行运行的任何基于Python的GUI,所以我显然需要启动一个释放GIL的线程并用C / C ++完成所有工作。
我很乐意用Cython(或手写的C扩展模块)包装这样的东西,但我正在寻找合适的GUI解决方案。它应该是跨平台的,并且易于与Cython扩展一起构建(后者似乎排除了Qt / qmake /等。)
重要的是,我希望能够按需这种方式启动多个窗口。似乎大多数GUI工具包都有一些run()
- 类似的函数,需要在主线程程序的main()
结束时调用,这让我不太清楚我不止一次打开一个窗口。我想我每次都可以启动一个单独的GUI事件循环,但这似乎是灾难的一个方法(我记得,GTK +显然不支持它,至少)。
我还会说fork()
'不是一种选择。
答案 0 :(得分:0)
我个人使用os.system("xv foo.png &")
或任何小型图像查看器。根据具体细节,您也可以执行g = os.popen("xv - &", "w")
并将图像数据写入文件g
。再次根据细节,我有时会使我的程序成为一个Web服务器(几十行代码,例如Twisted),从那里提供图像,并在我的Web浏览器中查看它们。我的观点是你根本不需要任何GUI或多线程。