我想在运行可选择使用PyQt4的程序时测试图形界面是否可用。如果我做
$ DISPLAY= python
>>> import PyQt4.QtGui
>>> PyQt4.QtGui.QApplication()
: cannot connect to X server
python崩溃($?
= 1
)。
检查DISPLAY
环境变量是不够的(值可能无效,XAuth可能会失败等)。
使用PyQt4检测功能失调显示的正确方法是什么?
我目前的方法有点破解(我想避免使用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
答案 0 :(得分: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连接,则超时可能太短..