2016-03-21 3 views
2

Ich entwickle ein PyQT-Programm mit der Spyder-IDE (die IPython verwendet) auf einem Windows 7-Rechner und Ich habe Probleme mit der Aussage sys.exit(app.exec_()). Ich habe diesen Beitrag gelesenVerwenden von app.exec() anstelle von sys.exit (app.exec_()) mit PyQT4 in Spyder wird nicht funktionieren

What the error when I close the dialog

und versucht, mit nur app.exec_(). Wenn ich aber nur app.exec_() verwende, öffnet sich die GUI sehr kurz und schließt dann sofort. Hier ist mein Minimum (nicht) Arbeitsbeispiel:

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() 

Dies ist mein erster Beitrag auf Stackoverflow, so dass, wenn ich diesen Beitrag in irgendeiner Weise verbessern können, lassen Sie es mich wissen.

+0

Bei der weiteren Untersuchung, wie es scheint, dass dies ein Problem speziell mit Spyder, und nicht IPython im Allgemeinen. Ich habe den obigen Code in einem Jupyter-Notebook ausgeführt, und die GUI wurde ohne Probleme erstellt. Daher würde jeder Einblick in das, warum das in Spyder nicht funktioniert, sehr geschätzt werden. Vielen Dank. – dyson

Antwort

0

Ich fand die Lösung. Offensichtlich brauchen Sie nicht app.exec_() überhaupt aufzunehmen, nach

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

Der folgende Code in Spyder arbeitet:

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() 
Verwandte Themen