【发布时间】:2016-03-21 15:09:50
【问题描述】:
我对使用 PyQt 非常陌生,并且正在尝试了解信号槽机制。不幸的是,PyQt 的文档通常会导致语法和参数几乎不一样的 Qt 页面。我试图在下面的简单示例中找出两件事。
1) QAction::triggered() 是一个 void 函数,那么我们如何在理论上由 trigger() 方法返回的某种对象上调用 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_())
【问题讨论】:
标签: qt pyqt pyqt5 qt-signals