1

我想测试运行可选使用 PyQt4 的程序时图形界面是否可用。如果我做

$ DISPLAY= python
>>> import PyQt4.QtGui
>>> PyQt4.QtGui.QApplication()
: cannot connect to X server

python崩溃($?= 1)。

检查环境变量是不够的DISPLAY(值可能无效,XAuth 可能失败等)

使用 PyQt4 检测功能失调显示的正确方法是什么?


我目前的方法有点hack(我想避免使用python-xlib,因为它似乎没有得到维护):

import XLib.display:
   XLib.display._BaseDisplay()
   # display was opened fine, PyQt4 won't crash
except:
   # don't use PyQt4 since display had some error
4

1 回答 1

0

由于 Qt 坚持要使进程崩溃,您可以在另一个进程中进行测试:

import subprocess, time, sys
p = subprocess.Popen(sys.executable, stdin=subprocess.PIPE)
p.stdin.write('from PyQt4 import QtGui\napp = QtGui.QApplication([])\n')
p.stdin.close()
time.sleep(0.1)
if p.poll() != 0:
    try:
        p.terminate()
    except OSError:
        pass
    print "No X server"
else:
    print "X ok"

如果是联网的 X 连接,超时可能太短了。

于 2012-07-09T16:51:48.920 回答