私はPyQtを使用するのが非常に新しく、シグナルスロットのメカニズムを理解しようとしています。残念ながら、PyQtのドキュメントは、構文とパラメータがほとんど同じでないQtページにつながることがよくあります。私は下の簡単な例で2つのことを理解しようとしています。PyQt5シグナルとスロットの簡単なコードの説明
1)QAction :: triggered()はvoid関数なので、理論的にはtriggered()メソッドによって返されるオブジェクトのある種のものでQAction :: triggered.connect()をどのように呼び出しますか?
2)「qApp」とは何ですか。私は、qAppの種類やPyQtによって作成された場所はわかりませんが、都合の良い時にしか使用できないように見えています。
私の誤解の一部は、おそらくQt/PyQtでの関数のC++とPythonの実装が同じではないが、私たちは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_())