我不太了解Pyside中的事件处理。当我尝试类似的事情时:
exitAction.triggered.connect(self.close)
以前将退出的QATACH将用于退出程序,它可以正常工作。但是当我做
之类的事情时怎么来newAction.triggered.connect(QMessageBox.information(self, 'New document', "New document is being created...", QMessageBox.Ok))
它不起作用?每当我启动程序时,它都会显示Qmessagebox,而不是在工具栏/菜单栏上单击该QACTION时。单击QACTION,我将如何继续实现QmessageBox?任何帮助都非常感谢!
连接信号时,必须指定其连接到的插槽,而无需实际调用插槽。请注意,在exitAction.triggered.connect(self.close)
中,关闭之后没有括号。如果要编写exitAction.triggered.connect(self.close())
,则在连接信号时(在程序启动时(将执行close
方法。这在您的第二个示例中发生了什么。
如果尚不存在一个插槽,可以正是您想要的,则必须自己创建它(信号期望的参数(。例如:
import sys
from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication, QMessageBox
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.button = QPushButton('Click me!')
self.setCentralWidget(self.button)
self.button.clicked.connect(self.btnClicked)
def btnClicked(self):
QMessageBox.information(self, 'New document',
"New document is being created...", QMessageBox.Ok)
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
app.exec_()
请注意,QT信号和QT事件不是相同的!(您的标题说事件,但您的帖子是关于信号的(。通常,我将使用信号,并且仅在没有信号的情况下使用事件。