einfache IPython Beispiel wirft Ausnahme auf sys.exit()

Ich bin dabei einige sehr einfache PySide (und PyQt) tutorials in IPython. Ein tutorial erstellt nur ein Fenster mit einigen Schiebereglern, um zu demonstrieren, slots und Signale.

Wenn ich schließen Sie das Fenster der Laufenden demo-Anwendung, sehe ich diese Fehlermeldung:

An exception has occurred, use %tb to see the full traceback.
SystemExit: 0
To exit: use 'exit', 'quit', or Ctrl-D.

Also ich betreibe %tb und erhalten Sie diese:

SystemExit                                Traceback (most recent call last)
/Workspaces/scratch/<ipython-input-1-88966dcfb499> in <module>()
     33 
     34 if __name__ == "__main__":
---> 35     main()

/Workspaces/scratch/<ipython-input-1-88966dcfb499> in main()
     29         w.show()
     30         app.exec_()
---> 31         sys.exit(0)
     32 
     33 

SystemExit: 0

Wenn ich versuche zu führen, meinen code wieder, bekomme ich dies:

RuntimeError: A QApplication instance already exists.

Falls es hilft, hier mein code:

from PySide.QtCore import *
from PySide.QtGui import *
import sys

class MyWindow(QWidget):
    def __init__(self):
        QWidget.__init__(self, None)

        vbox = QVBoxLayout(self)

        self.slider1 = QSlider(Qt.Horizontal)
        self.slider1.setRange(0, 99)
        self.slider1.setValue(0)
        vbox.addWidget(self.slider1)

        self.slider2 = QSlider(Qt.Horizontal)
        self.slider2.setRange(0, 99)
        self.slider2.setValue(99)
        vbox.addWidget(self.slider2)

        self.slider1.valueChanged.connect(self.slider2Changed)

    def slider2Changed(self, position):
        self.slider2.setValue(self.slider2.maximum() - position)

def main():
        app = QApplication(sys.argv)
        w = MyWindow()
        w.show()
        app.exec_()
        sys.exit(0)

if __name__ == "__main__":
    main()

Ich habe keine Fehler beim ausführen der code mit python:

python myexample.py

Dieser Fehler passiert nur wenn ich den code auszuführen, der in einem IPython (darunter ein notebook oder dem qtconsole oder die regelmäßige ipython-terminal).

UPDATE: Mein Hauptproblem ist, dass ich kann nicht führen Sie die Anwendung wieder einfach und schnell. Wenn ich versuche meinen code erneut ein, bekomme ich diese:

RuntimeError: A QApplication instance already exists.

Tötet die schnelle, interaktive Natur von IPython 🙁

InformationsquelleAutor MountainX | 2012-06-04

Schreibe einen Kommentar