python-gui-pyqt5的使用方法-7--partial 传递参数的方法:

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_())

猜你喜欢

转载自blog.csdn.net/wtt234/article/details/114080635
今日推荐