Python Pyside活动处理



我不太了解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事件不是相同的!(您的标题说事件,但您的帖子是关于信号的(。通常,我将使用信号,并且仅在没有信号的情况下使用事件。

相关内容

  • 没有找到相关文章

最新更新