2012-07-08 48 views
1

我想测试运行一个可选择使用PyQt4的程序时是否有图形界面可用。如果我做如何检查是否可以使用PyQt4打开DISPLAY?

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

蟒蛇崩溃($? = 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

你正在将X11的'DISPLAY'变量设置为'python'? – Linuxios 2012-07-08 13:42:39

+0

'DISPLAY ='在将DISPLAY设置为空并且运行python(你可以试试)后使用**空格**。 – eudoxos 2012-07-08 13:47:32

+0

好的。谢谢。这就说得通了 – Linuxios 2012-07-08 13:48:39

回答

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连接超时可能太短..