首页 > 其他分享 >PyQT5之为槽函数传递参数

PyQT5之为槽函数传递参数

时间:2024-06-08 15:43:45浏览次数:27  
标签:__ layout 函数 self PyQT5 mainFrame PyQt5 import 之为

方法一: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_())

标签:__,layout,函数,self,PyQT5,mainFrame,PyQt5,import,之为
From: https://www.cnblogs.com/jackchen28/p/18238664

相关文章

  • PyQT5信号与槽的连接
    方法一:fromPyQt5.QtCoreimport*fromPyQt5.QtWidgetsimport*importsysclassAutoSignalSlot(QWidget):def__init__(self):super().__init__()self.setWindowTitle("信号与槽自动连接")self.resize(300,100)self.okB......
  • YOLOv5改进总目录 | backbone、Neck、head、损失函数,注意力机制上百种改进技巧
    ......
  • PyQT5信号刷新时间
    importtimefromPyQt5.QtCoreimport*fromPyQt5.QtWidgetsimport*importsysclassBackendThread(QThread):update_date=pyqtSignal(str)defrun(self):whileTrue:data=QDateTime.currentDateTime()currentTim......
  • PyQT5之信号关闭窗口
    fromPyQt5.QtCoreimport*fromPyQt5.QtWidgetsimport*importsysclassWinSignal(QWidget):#定义一个信号button_clicked_signal=pyqtSignal()def__init__(self):super().__init__()self.setWindowTitle("为窗口类添加信号")......
  • 深度学习 - 激活函数
    深度学习-激活函数激活函数(ActivationFunction)是神经网络中的关键组件,用于引入非线性,使得网络能够学习和表示复杂的模式和关系。以下是几种常见的激活函数及其详细解释:1.Sigmoid(S型激活函数)作用过程:Sigmoid函数将输入映射到(0,1)之间。公式为:......
  • 【C++练级之路】【Lv.23】C++11——可变参数模板、lambda表达式和函数包装器
    快乐的流畅:个人主页个人专栏:《算法神殿》《数据结构世界》《进击的C++》远方有一堆篝火,在为久候之人燃烧!文章目录一、可变参数模板1.1参数包的概念1.2参数包的展开1.3emplace系列二、lambda表达式2.1lambda的格式2.2捕捉列表2.3lambda的原理2.4......
  • 解决C语言中scanf函数无法输入直接跳过的问题
    如果比较急的话,可以直接用这些方法,不急的话,建议读完。方法:1、看在调用该scanf函数前有没有用键盘输入过数据,有的话,可以尝试在该scanf函数前加个getchar();吃掉'\n'。2、在scanf前加一句"rewind(stdin);"(双引号里面的语句,不要把双引号也复制或打上去了),或者"fflush(stdin);",后......
  • 07C回调函数
    C零碎语法目录文章目录C零碎语法流程1.声明一个函数指针2.定义回调函数3.注册回调函数应用4.事件回调5.同步回调函数6.异步回调函数流程1.声明一个函数指针uint8_t(*p_CallbackFunc)(void);2.定义回调函数重要的是要注意回调函数只是一个函数。由于它的使......
  • c++的面对对象 的 虚函数
    #include<iostream>#include<string>classAnimal{public:virtualvoidmakeSound()=0;//纯虚函数,所有的动物都应该提供自己的叫声};classDog:publicAnimal{public:voidmakeSound()override{std::cout<<"Woof!"<&l......
  • 神经网络-激活函数
    深度学习中的激活函数与神经网络初始化在深度学习中,激活函数和网络的初始化对于模型的性能和收敛性至关重要。本文将探讨不同类型的激活函数,并展示如何使用PyTorch进行神经网络参数的初始化。激活函数对比激活函数是神经网络中的关键组成部分,它们在神经元之间引入非线性,使得......