pyqt5讲解12:自定义参数 (给信号传入参数)

2023-11-19

在pyqt编程过程中,经常会遇到给槽函数传递自定义参数的情况,比如有一个信号与槽函数的连接是

button1.clicked.connect(shou_page)

对于clicked 信号来说,是没有参数的。
对于shou_page 是可以有参数的

如:

def show_page(slef,name):
    print(name,"点啦")

一个有参数,一个无参数 ,运行起来肯定有错。

解决方法1:
lambda

# -*- coding: utf-8 -*-

"""
    【简介】
    部件中的信号槽传递,使用lambda表达式传参数示例


"""

from PyQt5.QtWidgets import QMainWindow, QPushButton, QWidget, QMessageBox, QApplication, QHBoxLayout
import sys


class WinForm(QMainWindow):
    def __init__(self, parent=None):
        super(WinForm, self).__init__(parent)
        self.setWindowTitle("信号和槽传递额外参数例子")
        button1 = QPushButton('Button 1')
        button2 = QPushButton('Button 2')

        button1.clicked.connect(lambda: self.onButtonClick(1))
        button2.clicked.connect(lambda: self.onButtonClick(2))

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

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

    def onButtonClick(self, n):
        print('Button {0} 被按下了'.format(n))
        QMessageBox.information(self, "信息提示框", 'Button {0} clicked'.format(n))


if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = WinForm()
    form.show()
    sys.exit(app.exec_())

在这里插入图片描述
点击 button1
弹出
在这里插入图片描述
解释:
关键行 传入参数1
button1.clicked.connect(lambda: self.onButtonClick(1))

解决方法2:
partial函数

# -*- coding: utf-8 -*-

"""
    【简介】
     部件中的信号槽传递,使用partial函数传参数示例


"""

from PyQt5.QtWidgets import QMainWindow, QPushButton, QWidget, QMessageBox, QApplication, QHBoxLayout
import sys
from functools import partial


class WinForm(QMainWindow):
    def __init__(self, parent=None):
        super(WinForm, self).__init__(parent)
        self.setWindowTitle("信号和槽传递额外参数例子")
        button1 = QPushButton('Button 1')
        button2 = QPushButton('Button 2')

        button1.clicked.connect(partial(self.onButtonClick, 1))
        button2.clicked.connect(partial(self.onButtonClick, 2))

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

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

    def onButtonClick(self, n):
        print('Button {0} 被按下了'.format(n))
        QMessageBox.information(self, "信息提示框", 'Button {0} clicked'.format(n))


if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = WinForm()
    form.show()
    sys.exit(app.exec_())

关键代码:
from functools import partial
button1.clicked.connect(partial(self.onButtonClick, 1))
button2.clicked.connect(partial(self.onButtonClick, 2))

代码来源于:书籍 pyqt5快速开发与实战

记录学习笔记

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pyqt5讲解12:自定义参数 (给信号传入参数) 的相关文章

随机推荐

  • 项目实训:bd搜索爬虫

    百度爬虫 1 requests库使用 2 lxml库使用 3 pandas库使用 4 数据清洗 5 数据分析可视化 结构分析 接下来的对目标爬虫的结构进行分析 爬虫思路 分析数据来源在哪 如何模拟的像真实用户 如果提取数据 如何保存数据 文
  • UE4 射线检测案例(C++)

    UE4 射线检测 C 开发场景 玩家 C 开发的 武器 C 射线检测函数 蓝图 C 效果 制作流程 添加开火按键映射 新建一个继承ACharacter的C 用蓝图继承刚刚新建的C 然后设置好游戏模式 我 这是是 用了一个枚举 其实你直接调用
  • Linux-ubuntu系统查看显卡型号、显卡信息详解、显卡天梯图

    本文将介绍如下内容 如何在ubuntu系统中查看显卡型号 其他文章大多只介绍了命令而未介绍如何对应显卡型号 在ubuntu系统中显卡详细信息 以及所代表的含义 显卡天梯图 2019年7月 一 查看显卡型号 1 查看显卡型号命令 lspci
  • 自定义全局异常

    1 自定义响应结果码 接口 public interface ResultCode 操作是否成功 true为成功 false操作失败 boolean success 操作代码 int code 提示信息 String message 2 自
  • Xmind for Mac 绿色破解(包含激活序列码)

    下载地址 主程序 https www xmind cn xmind downloads xmind 8 update8 macosx dmg 破解补丁 https carrot ctfile com fs 11269771 30027815
  • Centos7 配置SSH

    一 何为SSH 1 SSH的功能 SSH 为 Secure Shell 的缩写 由 IETF 的网络小组 Network Working Group 所制定 SSH 为建立在应用层基础上的安全协议 SSH 是较可靠 专为远程登录会话和其他网
  • CSDN高校俱乐部名师百校行——河北站

    CSDN高校俱乐部启动IT名师百校行活动 一方面通过线下讲座把CSDN骨灰级导师的宝贵经验分享给高校学生 促进CSDN和高校的沟通互动 一方面将高校俱乐部的学习小组带到高校 公益培养IT技术爱好者为企业所需人才 结合技术直播 组织线下讲座
  • 商标45类分类表明细表_注册商标没选择好分类,注册下来也白搭

    商标是区别商品或服务来源的一种标志 每一个注册商标都是指定用于某一商品或服务上的 正是为了商标检索 审查 管理工作的需要 把某些具有共同属性的商品组合到一起 编为一个类 将所有商品及服务共划分为45个类别 形成了商标分类表 商标注册用商品和
  • 输入一串字符,输出其最长单词的长度(不要求输出最长单词)

    无非就是要解决两个问题 1 如何判断一个单词的开始 lastchar 2 统计该单词的长度 sum 3 记录最大单词长度 max 以下是不用数组的做法 include
  • 系统架构设计师 8:系统质量属性与架构评估

    软件系统属性包括功能属性和质量属性 软件架构重点关注的是质量属性 为了精确 定量地表达系统的质量属性 通常会采用质量属性场景的方式进行描述 在确定软件系统架构 精确描述质量属性场景后 就需要对系统架构进行评估 软件系统架构评估是在对架构分析
  • 乘势而起,走进2019年风口“边缘计算”

    戳蓝字 CSDN云计算 关注我们哦 作者 pasca 原创 蛋蛋团 ID dandan tuan 5G火了 也带火了边缘计算 2019年3月 一篇 5G风口扩散 超清视频边缘计算概念崛起 的文章意外走红 直接导致此前不温不火的 百度搜索暴增
  • 微服务+Jenkins 简单的linux自动部署脚本

    No 1 启停脚本 bin bash 加载配置 避免获取不到java home source etc profile SERVICE HOME 项目路径 SERVICE NAME 服务名称 cd SERVICE HOME SERVICE N
  • easyclick与autojs的对比和常用代码(完善中)

    作成了文档 链接 https easydoc xyz s 10157628 加入我们的QQ群553908361 和各作者同群交流 该教程优先发布于收费脚本v群 部分代码收集于网络 现在已经不知道作者谁了 如有侵权 请私信我进行删除 启动ap
  • Redis 缓存穿透和雪崩的概念介绍

    Redis 缓存穿透和雪崩的概念 缓存穿透 缓存穿透的概念其实很简单 我们经常使用 Redis 作为缓存数据库 如果用户相插叙一个数据 但是发现 Redis 没用这条数据 也就是没有命中 Redis 数据库中的数据 于是就到数据库中查询 上
  • 基于weblibvirt管理多个kvm主机

    1 问题a virt manager管理kvm需要接入显示屏或搭建vnc或开启xming转发 问题b virt manager纳管其他kvm后 重启kvm后需要重新纳管 且无法便捷的创建存储池 问题c 基于centos8 stream系统环
  • html图片加白边阴影,CSS3毛玻璃效果(blur)有白边问题的解决方法

    做一个登录页 全屏背景图毛玻璃效果 实现方法如下 var w window innerWidth document documentElement clientWidth document body clientWidth var h wi
  • nginx根据header分流

    OS Centos 7 6 version nginx 1 18 0 nginx根据header分流 不同header头分发到不同节点 同一域名路径根据不同header头分发到不同节点 主要配置 通过 http version 判断版本 转
  • Android 拍摄照片后返回缩略图的两种方法详解

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 前言 如果简单地拍照片并非您应用的主要目标 那么您可能希望从相机应用中获取图片并对该图片执行一些操作 一 这就是第一种方法 比较简单 不
  • 【深度学习】 Python 和 NumPy 系列教程(十三):Matplotlib详解:1、2d绘图(上):折线图、散点图、柱状图、直方图、饼图

    目录 一 前言 二 实验环境 三 Matplotlib详解 0 绘图风格 1 2d绘图类型 0 设置中文字体 1 折线图 Line Plot 2 散点图 Scatter Plot 3 柱状图 Bar Plot 4 直方图 Histogram
  • pyqt5讲解12:自定义参数 (给信号传入参数)

    在pyqt编程过程中 经常会遇到给槽函数传递自定义参数的情况 比如有一个信号与槽函数的连接是 button1 clicked connect shou page 对于clicked 信号来说 是没有参数的 对于shou page 是可以有参