2016-03-21 7 views
2

Windows 7マシンでSpyder IDE(IPythonを使用)を使用してPyQTプログラムを開発しています。私は文sys.exit(app.exec_())に問題があります。私はこのポスト SpyderのPyQT4でsys.exit(app.exec_())の代わりにapp.exec()を使用すると動作しません

What the error when I close the dialog

を読んで、ちょうど app.exec_()使用して試してみました。しかし、ただ app.exec_()だけを使用すると、GUIが非常に短時間開いてすぐに終了します。ここに私の最小値である(ない)作業例は:

import sys 
from PyQt4 import QtGui 

class Example(QtGui.QWidget): 

    def __init__(self): 
     super(Example, self).__init__() 
     self.initUI() 

    def initUI(self): 
     btn = QtGui.QPushButton('Button', self) 
     self.show() 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    ex = Example() 
    app.exec_() 
    #sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 

私はどのような方法でこのポストを改善することができたので、もしこれが、stackoverflowの上の私の最初の投稿です、私に知らせてください。

+0

さらに調査すると、これはスパイダーと特異的に問題であることが表示されますIPythonは一般的ではありません。上記のコードをJupyterのノートブックで実行したところ、問題なくGUIが作成されました。 Spyderでこれがうまくいかない理由についての洞察は、非常に高く評価されます。ありがとうございました。 – dyson

答えて

0

私は解決策を考え出しました。次のコードは、スパイダーで動作どうやらあなたはまったくapp.exec_()を含める必要はありません、

http://cyrille.rossant.net/making-pyqt4-pyside-and-ipython-work-together/

に従って:

import sys 
from PyQt4 import QtGui 

class Example(QtGui.QWidget): 

    def __init__(self): 
     super(Example, self).__init__() 
     self.initUI() 

    def initUI(self): 
     btn = QtGui.QPushButton('Button', self) 
     self.show() 

ex= Example()