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:自定义参数 (给信号传入参数) 的相关文章

  • PyQt 中同一模型的不同视图

    我有一个关于 PyQt 中特定模型的多个视图的问题 目前 我有一个 TreeView 设置来显示继承自 StandardItemModel 的模型 模型中存在三种类型的 StandardItem Alpha Beta Gamma 它们在 T
  • 将网页从 QtWebKit.webView 打印为 pdf PyQt4

    您好 我想要完成的是 我有一个带有自定义 QtWebKit QWebView 的 QWidget 它显示特定的网站 我想使用 python 和 PyQt 将该网页保存为 pdf from PyQt4 import QtCore QtGui
  • PyQt self.close() 在 __init__() 中

    我在 Python 2 7 下使用 PyQt4 时遇到了一些小问题 我正在编写一个小项目 其中有一些 QDialogs 相互打开 因此 我打开一个对话框 然后立即打开另一个对话框来检查某些内容 当出现错误检查时 我希望关闭整个对话框 它看起
  • 为什么需要用 pyqtSlot 装饰连接的槽?

    我正在使用 pyqt5 并且使用类似于以下的代码连接了几种方法 self progress canceled connect self cancel 例如 其中self cancel is def cancel self self time
  • 如何使用表单上的按钮向 QTabWidget 添加选项卡?

    我决定为我的脚本编写视觉形式 这个想法是有一个按钮可以将新选项卡添加到 QTabWidget 它不起作用 我找不到一个好的例子 我使用PyQt5 这是我尝试过的一部分 import sys from PyQt5 QtGui import Q
  • 如何实时返回鼠标坐标?

    我是 PyQt 的新手 我正在尝试使用它来创建一个实时返回鼠标位置的小部件 这是我所拥有的 import sys from PyQt5 QtWidgets import QWidget QToolTip QPushButton QAppli
  • 将内容添加到pyqt4滚动区域

    如何将内容添加到 pyqt4 中的滚动区域 我要自定义一个小部件吗 例如 如果我有一个数组或一个列表a 10 2 2 2 22 3 3 3 我应该如何在可滚动区域中显示变量 如果要将内容添加到滚动区域 则需要定义一个新的小部件并将其添加到滚
  • 为 python GUI 应用程序授予 root 权限以在 ubuntu 中运行命令

    现在 我有一个 python GUI 应用程序 需要使用 sudo 权限运行命令 如下所示 import commands iStat askpassPath commands getstatusoutput which ssh askpa
  • 编辑表时关闭 PyQt 事件循环

    我正在使用 PyQt 开发 GUI GUI 有一个 qListWidget 一个 qTableWidget 和一个用 Mayavi 实现的绘图 该列表指的是绘制的形状 例如圆柱体和圆锥体 当在列表中选择形状时 我希望将形状的属性加载到表中
  • 如何获取对话框/窗口的背景颜色?

    如何获取 RGB 格式的对话框 窗口的背景颜色 Use QWidget palette访问小部件的调色板和QPalette color获取背景颜色 color widget palette color QPalette Background
  • PyQt 与 PySide 比较 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我目前在 Linux 上的 Qt 重型 C Python 环境中开发了许多应用程序 并根据需要移植到 PC Mac 我使用嵌入 C 中的 Pyt
  • 从线程接收数据后pyqt主窗口不断崩溃

    我有一个 QMainWindow 启动 QThread 并等待来自网络的数据 当收到任何数据时更新 UI 问题是 它有时会崩溃 有时不会 我所做的就是启动它并等待数据 这是线程类 class ListenerThread QtCore QT
  • 如何在子进程期间和之后执行操作

    我有一个调用子程序的程序 当子程序使用 Popen 运行时 我需要禁用运行按钮并启用停止按钮 但是 由于Popen打开了一个新进程 因此程序完成后应该打印的内容会立即打印出来 我尝试添加self p communicate after Po
  • 如何在 PyQt 应用程序退出时禁用清除剪贴板?

    我有一个简单的 PyQt4 应用程序 请参阅下面的代码 它揭示了一个问题 如果我从QLineEdit并将其复制到剪贴板 然后我只能在应用程序运行时将其粘贴到另一个应用程序 似乎在退出时 PyQt 应用程序会清除剪贴板 因此我无法在应用程序关
  • 如何使 QTreeWidget 中的特定列成为整数/浮点数,以便用户无法输入任何字母或符号而不是整数/浮点数?

    我正在 PyQt5 中使用 QTreeWidget 制作 GUI 我希望特定列仅是整数列 用户不应该能够在其中输入任何非整数项 我看到了一些使用 QVariant 的方法 但它似乎不能满足我的要求 这就是我的found https stac
  • 如何在 PyQt 中使用 QThreads 双向设置信号和槽?

    这是基于 ekhumoro 答案的后续问题here https stackoverflow com a 52005755 4464653 and here https stackoverflow com a 20818401 4464653
  • 多级QTreeView

    我很难理解如何使用 QTreeView 和 QStandardItemModel 设置多级 QTree 这是我所拥有的 from PySide QtGui import import sys class MainFrame QWidget
  • 关于 GUI 计时器显示后台线程已用时间的建议?

    Issue 我有一个 PyQt GUI 用户按下按钮即可启动后台线程 workerThread 它是从QThread 我想要一个计时器显示 以QLabel 显示自此以来已经过去了多少时间workerThread开始 我希望这个计时器在wor
  • 将 PyQt5 QPixmap 转换为 numpy ndarray

    我有像素图 pixmap self screen grabWindow 0 self x self y self width self height 我想将其转换为 OpenCV 格式 我尝试将其转换为numpy ndarray如上所述he
  • 使用 PyQt5 拖放 QLabels

    我正在尝试使用 PyQt5 将 Qlabel 拖放到另一个 Qlabel 上 from PyQt5 QtWidgets import QApplication QWidget QToolTip QPushButton QMessageBox

随机推荐

  • 项目实训: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 是可以有参