簡體   English   中英

Python PySide事件處理

[英]Python PySide Event Handling

我不太了解PySide中的事件處理。 當我嘗試類似的東西:

exitAction.triggered.connect(self.close)

之前將exitAction設為QAction並將其用於退出程序的地方,效果很好。 但是當我做類似的事情時

newAction.triggered.connect(QMessageBox.information(self, 'New document', "New document is being created...", QMessageBox.Ok))

它行不通嗎? 每當我啟動程序時,它就會顯示QMessageBox,而不是在工具欄/菜單欄上單擊該QAction時顯示。 單擊QAction后如何繼續實現QMessageBox? 任何幫助是極大的贊賞!

連接信號時,必須指定信號所連接的插槽,而無需實際調用該插槽。 請注意,在exitAction.triggered.connect(self.close)中, 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 事件不相同! (您的標題說的是事件,但您的帖子是關於信號的)。 通常,我將使用信號,並且僅在沒有信號要執行的操作時才使用事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM