在连接槽函数时,直接使用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_())