Sollte ich `app.exec () "oder" app.exec_()` in meinem PyQt-Anwendung?

Ich benutze Python 3 und PyQt5. Hier ist meine test-PyQt5-Programm, konzentrieren sich auf die letzten 2 Zeilen:

from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import sys

class window(QWidget):
def __init__(self,parent=None):
    super().__init__(parent)
    self.setWindowTitle('test')
    self.resize(250,200)

app=QApplication(sys.argv)
w=window()
w.show()
sys.exit(app.exec())
#sys.exit(app.exec_())

Ich weiß exec ist eine Sprache Schlüsselwort in Python. Aber code auf Offizielle Dokumentation PyQt5 (speziell die Objekt der Zerstörung an der Ausfahrt Teil). Ich sehe das Beispiel zeigt die Verwendung von app.exec() was mich verwirrt.

Wenn ich es getestet auf meinem Rechner. Ich fand, dass es keinen sichtbaren Unterschied zu meinem Ende. Sowohl mit als auch ohne _ produziert die gleiche Ausgabe in kürzester Zeit Unterschied.

Meine Frage ist:

  • Ist dort etwas falsch geht, wenn ich app.exec()? wie eine Kollision mit Python internen exec? Ich vermute, weil beide exec's sind in der Ausführung etwas.
  • Wenn nicht, kann ich beide abwechselnd?
  • In PyQt5, brauchen Sie nicht sys.exit() überhaupt. app.exec_() oder app.exec() allein ist genug, und es funktioniert normal. Sie wurden einige Dinge in PyQt5 unter der Haube, so dass Sie nicht brauchen, die sys.exit() mehr. Wenn Sie möchten, dass Ihr code ausgeführt werden, der auf PyQt4, dann haben sys.exit() es. Auch app.exec_() und app.exec() sind austauschbar, so können Sie je nachdem, was Sie möchten. Wenn Sie möchten, dass Ihr code ausgeführt werden, der auf PyQt4, dann stick mit app.exec_(). Also die Quintessenz ist: damit Ihr code richtig funktioniert PyQt5 und PyQt4, verwenden Sie sys.exit(app.exec_()).
  • Boštjan Mejak.. hoora für deinen Kommentar und explenation! Mehr upvotes benötigt sicher!!! Erster Kommentar, so weit ich gefunden habe, erklärt, dass diese geringen Unterschiede, die ich bemerkt in den code. Der Wechsel von pyqt4 zu pyqt5 ist wie das lernen wieder zu Lesen (muss zugeben.. 10 Jahre nicht Programmieren lässt einen ein wenig eingerostet.. und python knallen ein paar funballs unter der Haube zu).
  • Sie brauchen sys.exit() sonst app.exit(1) Anruf nicht führen zu den jeweiligen exit-status, d.h. auch auf Python 3 und PyQt5, verwenden Sie sys.exit(app.exec()).
  • In PyQt5, die Sie gelöst haben, die Reihenfolge, in der die Qt und Python stoppen Ihre Prozess-und deshalb werden wir nun wirklich nicht brauchen, um verwenden Sie die sys.exit () - Aufruf mehr. Es ist alles erklärt, in der PyQt5 Dokumentation.
  • falsch. Hier ist ein minimale code-Beispiel. btw, benutze \@ syntax wenn Sie möchten, dass ich benachrichtigt werden über Ihre Kommentare.
InformationsquelleAutor socket | 2014-03-24
Schreibe einen Kommentar