PyQT5之为槽函数传递参数

方法一:lambda表达式传递参数

from PyQt5.QtCore import *
from PyQt5 import QtCore
from PyQt5.QtWidgets import *
import sys


class LambdaSlotArg(QMainWindow):

    def __init__(self):
        super().__init__()
        self.setWindowTitle("使用Lambda表达式为槽函数传递参数")
        self.resize(800, 500)
        button1 = QPushButton("按钮1")
        button2 = QPushButton("按钮2")

        layout = QHBoxLayout()
        layout.addWidget(button1)
        layout.addWidget(button2)

        mainFrame = QWidget()
        mainFrame.setLayout(layout)
        self.setCentralWidget(mainFrame)

        button1.clicked.connect(lambda: self.onButtonClick(10, 20))
        button2.clicked.connect(lambda: self.onButtonClick(40, -20))

    def onButtonClick(self, m, n):
        print("m+n=", m+n)
        QMessageBox.information(self, "结果=", str(m+n))


if __name__ == '__main__':

    app = QApplication(sys.argv)
    main_win = LambdaSlotArg()
    main_win.show()
    sys.exit(app.exec_())

方法二:
使用Partial对象为槽函数传递参数

from PyQt5.QtCore import *
from PyQt5 import QtCore
from PyQt5.QtWidgets import *
from functools import partial
import sys


class PartialSlotSlotArg(QMainWindow):

    def __init__(self):
        super().__init__()
        self.setWindowTitle("使用Lambda表达式为槽函数传递参数")
        self.resize(800, 500)
        button1 = QPushButton("按钮1")
        button2 = QPushButton("按钮2")
        x = 20
        y = -123


        layout = QHBoxLayout()
        layout.addWidget(button1)
        layout.addWidget(button2)

        mainFrame = QWidget()
        mainFrame.setLayout(layout)
        self.setCentralWidget(mainFrame)

        # 方法二
        button1.clicked.connect(partial(self.onButtonClick, 10, 20))
        button2.clicked.connect(partial(self.onButtonClick, x, y))

    def onButtonClick(self, m, n):
        print("m+n=", m+n)
        QMessageBox.information(self, "结果=", str(m+n))


if __name__ == '__main__':

    app = QApplication(sys.argv)
    main_win = PartialSlotSlotArg()
    main_win.show()
    sys.exit(app.exec_())

posted @   星空28  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示