在連接槽函數時,直接使用lambda構造輸入參數,達到輸入參數的目的
""" 使用lambda表達式為槽函數傳遞參數 Lambda表達式: 匿名函數, 也就是沒有名字的函數 fun = lambda : print("hello world") fun() fun1 = lambda x,y:print(x, y) fun1("a", "b") """ from PyQt5.QtCore import * from PyQt5.QtWidgets import * import sys class LambdaSlotArg(QMainWindow): def __init__(self): super(LambdaSlotArg, self).__init__() self.setWindowTitle("使用lambda表達式為槽函數傳遞參數") button1 = QPushButton("按鈕1", self) button2 = QPushButton("按鈕2") ok = 100 #lambda構造可以進行參數傳入的函數 button1.clicked.connect(lambda :self.onButtonClick(10, ok)) button2.clicked.connect(lambda :self.onButtonClick(40, -20)) layout = QHBoxLayout() layout.addWidget(button1) layout.addWidget(button2) mainFrame = QWidget() mainFrame.setLayout(layout) self.setCentralWidget(mainFrame) def onButtonClick(self, m, n): print("m + n = ", m + n) QMessageBox.information(self, "結果", str(m + n)) if __name__ == "__main__": app = QApplication(sys.argv) main = LambdaSlotArg() main.show() sys.exit(app.exec_())