1

オプションで 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
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 に答える