Ich bin sehr neu in der Verwendung von PyQt und versuche, den Signal-Slot-Mechanismus zu verstehen. Leider führt die Dokumentation für PyQt oft zu Qt-Seiten, auf denen Syntax und Parameter kaum übereinstimmen. Ich versuche, im einfachen Beispiel zwei Dinge herauszufinden.PyQt5 Signal und Slot einfache Code Erklärung
1) QAction :: triggered() ist eine void-Funktion, also wie rufen wir QAction :: triggered.connect() auf irgendeine Art von Objekt auf, das theoretisch von der triggered() -Methode zurückgegeben würde.
2) Und was ist "qApp". Ich weiß nicht, welcher Typ qApp ist oder wo es von PyQt erstellt wird, aber es scheint aus dem Nichts zu erscheinen, nur um zu einem passenden Zeitpunkt verwendet zu werden.
Ein Teil meines Missverständnisses kommt wahrscheinlich von der Tatsache, dass die C++ - und Python-Implementierung von Funktionen in Qt/PyQt nicht die gleichen sind, aber wir müssen verstehen, was ohne irgendeine Art von Python-Dokumenten vor sich geht.
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
exitAction = QAction(QIcon('exit24.png'), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.triggered.connect(qApp.quit)
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAction)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Toolbar')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())