pyqt5的使用方法,lambda,partial 传递参数的方法对比:
from PyQt5.QtWidgets import *
import sys
from functools import partial
class lambdaSlotArg(QMainWindow):
def __init__(self):
super(lambdaSlotArg, self).__init__()
self.setWindowTitle("lambda函数传递参数")
button1=QPushButton("按钮1")
button2=QPushButton("按钮2")
#变量信息
x=100
y=200
**# lambda 与 partial 的对比,只是在下面的地方的唯一的区别**
# button1.clicked.connect(lambda:self.onButtonClick(x,y))
# button2.clicked.connect(lambda:self.onButtonClick(100,20))
button1.clicked.connect(partial(self.onButtonClick,x,y))
button2.clicked.connect(partial(self.onButtonClick,100,900))
# 传递参数
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)
if __name__ == '__main__':
app=QApplication(sys.argv)
form=lambdaSlotArg()
form.show()
sys.exit(app.exec_())