利用lambda表达式为槽函数传递参数
lambda是匿名函数
lambda 参数:函数体
fun = lambda :print(‘我是没有参数的lambda函数’)
fun() #我是没有参数的lambda函数
fun_xy = lambda x,y:print(f’我是带参数的lambda函数x{x},y{y}')
fun_xy(‘我是x’,‘我是y’) #我是带参数的lambda函数x我是x,y我是y
from PyQt5.QtWidgets import *
from PyQt5.QtWidgets import QWidget,QApplication,QDialog,QLineEdit,QPushButton,QHBoxLayout,QMessageBox
import sys
class LambdaSlotArg(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('使用lambda表达式为槽函数传递参数')
btn1 = QPushButton('按钮1')
btn2 = QPushButton('按钮2')
# 这样点击后,可以考虑传递交易类型或者整个参数
btn1.clicked.connect(lambda: self.onBtnClick(100,200))
btn2.clicked.connect(lambda: self.onBtnClick(-100, -200))
layout = QHBoxLayout()
layout.addWidget(btn1)
layout.addWidget(btn2)
mainFrame = QFrame()
mainFrame.setLayout(layout)
self.setCentralWidget(mainFrame)
def onBtnClick(self,m,n):
print("onBtn1Click")
print(f"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_())