Je suis très novice dans l'utilisation de PyQt et j'essaie de comprendre le mécanisme du slot de signal. Malheureusement, la documentation pour PyQt conduit souvent à des pages Qt où la syntaxe et les paramètres sont à peine les mêmes. J'essaie de comprendre 2 choses dans l'exemple simple ci-dessous.Explication du code simple du signal PyQt5 et du slot
1) QAction :: triggered() est une fonction void, alors comment appelons-nous QAction :: triggered.connect() sur un type d'objet qui serait théoriquement retourné par la méthode triggered().
2) Et qu'est-ce que "qApp". Je ne sais pas quel type qApp est ou où il est créé par PyQt, mais il semble sortir de nulle part pour moi, seulement pour être utilisé à un moment opportun. Une partie de mon incompréhension vient probablement du fait que l'implémentation des fonctions C++ et Python dans Qt/PyQt n'est pas la même mais nous devons comprendre ce qui se passe sans aucune sorte de docs python.
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_())