Pyside6-第六篇-各按钮的信号与槽

news2024/12/23 17:32:05

今天是Pyside6的第六篇内容。一起来看看各按钮的信号与槽。

446dafed7585c853387065dad3044db7.png
from PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QRadioButton, \
    QPushButton, QCheckBox, QToolButton, QMenu


class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initui()
        self.show()

    def initui(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('信号与槽')

        self.QRadio_Yes = QRadioButton("是", self)
        self.QRadio_Yes.move(40, 20)
        self.QRadio_No = QRadioButton("否", self)
        self.QRadio_No.move(40, 40)

        self.QPush = QPushButton("按下", self)
        self.QPush_text = QPushButton("由此展示格信号触发效果", self)
        self.QPush.move(40, 60)
        self.QPush_text.move(150,150)

        self.QChek_PWD = QCheckBox("记住密码", self)
        self.QChek_Login = QCheckBox("自动登录", self)
        self.QChek_PWD.move(40, 90)
        self.QChek_Login.move(40, 120)

        self.QTool = QToolButton(self)
        self.QTool.setText("目录")
        self.QTool.move(40, 140)
        # 设置图标与文字并排显示
        self.QTool.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        # 设置弹出模式
        self.QTool.setPopupMode(QToolButton.MenuButtonPopup)
        self.menu = QMenu(self)
        self.action1 = QAction('QING AN', self)
        self.action2 = QAction('V: qing_an_an', self)
        self.menu.addAction(self.action1)
        self.menu.addAction(self.action2)
        self.QTool.setMenu(self.menu)

if __name__ == '__main__':
    app = QApplication([])
    ex = Example()
    app.exec()

以上是UI的全部代码了。也是本章所有的大致内容,会围绕着这些展开了讲各个信号槽,其中我们使用一个QPushButton来显示一下部分效果。

正题开始;

QPushButton的信号与槽

常用三种信号:clicked、pressed、released,看看示例

from PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QPushButton


class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initui()
        self.show()

    def initui(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('信号与槽')

        self.QPush = QPushButton("按下", self)
        # self.QPush.clicked.connect(lambda: self.QPush_btn("我被出发了cliked信号"))  # 被点击
        # self.QPush.pressed.connect(lambda: self.QPush_btn("我被出发了pressed信号"))     # 被按下发出信号
        self.QPush.released.connect(lambda: self.QPush_btn("我被触发released信号"))     # 被释放发出信号
        self.QPush_text = QPushButton("由此展示格信号触发效果", self)
        self.QPush.move(40, 60)
        self.QPush_text.move(150, 150)

    def QPush_btn(self, txt):
        self.QPush_text.setText(txt)


if __name__ == '__main__':
    app = QApplication([])
    ex = Example()
    app.exec()

在使用pressed的时候,只要鼠标按下,就会触发,按下与释放使用频率先对点击还是比较的低的。


QRadioButton的信号与槽

关于QRadioButton,所使用的不多,记住toggled就好。其他的信号与他关系其实不大。当然你也可以通用clicked。

示例如下:

from PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QRadioButton

class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initui()
        self.show()

    def initui(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('信号与槽')

        self.QRadio_Yes = QRadioButton("是", self)
        # self.QRadio_Yes.toggled.connect(lambda: self.QPush_btn("我切换成了是"))
        self.QRadio_Yes.clicked.connect(lambda: self.QPush_btn("我点击了是"))

        self.QRadio_Yes.move(40, 20)
        self.QRadio_No = QRadioButton("否", self)
        # self.QRadio_No.toggled.connect(lambda: self.QPush_btn("我切换成了否"))
        self.QRadio_No.clicked.connect(lambda: self.QPush_btn("我点击了否"))
        self.QRadio_No.move(40, 40)


    def QPush_btn(self, txt):
        self.QPush_text.setText(txt)


if __name__ == '__main__':
    app = QApplication([])
    ex = Example()
    app.exec()

QCheckBox信号与槽

这个就先对容易了,常用的只需要记住一个即可,那就是toggled

from PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QRadioButton, \
    QPushButton, QCheckBox, QToolButton, QMenu


class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initui()
        self.show()

    def initui(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('信号与槽')

        self.QChek_PWD = QCheckBox("记住密码", self)
        self.QChek_Login = QCheckBox("自动登录", self)
        self.QChek_Login.toggled.connect(lambda: self.QPush_btn("我状态切换了"))
        self.QChek_PWD.move(40, 90)
        self.QChek_Login.move(40, 120)

    def QPush_btn(self, txt):
        self.QPush_text.setText(txt)


if __name__ == '__main__':
    app = QApplication([])
    ex = Example()
    app.exec()

QToolButton信号与槽

这个就不多举例了,QPushButton有的他都有。主要讲讲作为下拉框,我们如何知道选中了什么内容,所需要使用到的信号是triggered。

from PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QApplication, QWidget, QRadioButton, \
    QPushButton, QCheckBox, QToolButton, QMenu


class Example(QWidget):
    def __init__(self):
        super(Example, self).__init__()
        self.initui()
        self.show()

    def initui(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('信号与槽')

        self.QTool = QToolButton(self)
        self.QTool.setText("目录")
        self.QTool.move(40, 140)
        # 设置图标与文字并排显示
        self.QTool.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
        # 设置弹出模式
        self.QTool.setPopupMode(QToolButton.MenuButtonPopup)
        self.menu = QMenu(self)
        self.action1 = QAction('QING AN', self)
        self.action2 = QAction('V: qing_an_an', self)
        self.menu.addAction(self.action1)
        self.menu.addAction(self.action2)
        self.QTool.setMenu(self.menu)
        self.menu.triggered.connect(self.QPush_btn)

    def QPush_btn(self, txt):
        self.QPush_text.setText(txt.text())

if __name__ == '__main__':
    app = QApplication([])
    ex = Example()
    app.exec()

比较特殊的是,命名连接的槽需要传递一个参数,我却没有传递,这是因为在源码中进行了这项操作了。

还有一个好玩的就是鼠标悬停信号了,hovered。顾名思义就是鼠标悬停在QMenu中的时候就会默认触发信号。 self.menu.hovered.connect(self.QPush_btn)       # 鼠标悬停信号自己可以试试效果。


最后附上源代码gitee地址: https://gitee.com/qinganan_admin/Pyside6_Information/blob/master/%E7%AC%AC%E4%BA%8C%E7%AB%A0%EF%BC%8C%E6%8C%89%E9%92%AE/%E4%BF%A1%E5%8F%B7%E4%B8%8E%E6%A7%BD.py

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/614414.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用BERT进行文本分类

本范例我们微调transformers中的BERT来处理文本情感分类任务。 我们的数据集是美团外卖的用户评论数据集。 模型目标是把评论分成好评(标签为1)和差评(标签为0)。 #安装库 #!pip install datasets #!pip install transformers[torch] #!pip install torchkeras 公众号算法美食…

你知道ping命令是如何工作的吗?

你知道ping命令是如何工作的吗? 我们用来测试一台机器与另一台机器的网络连通性一般会使用ping命令,那么你知道ping命令是如何工作的吗?ping命令是基于ICMP协议工作的。 一、介绍ICMP协议 因特网控制报文协议ICMP(Internet Con…

安卓大作业 咖啡展示App

系列文章 安卓大作业 咖啡展示App 文章目录 系列文章1.背景2.所有截图3.总结4. 源代码获取 1.背景 为了便于用户对于咖啡信息的浏览,我设计了一个咖啡展示的app。可以在这个App中查看到一些咖啡的信息,点…

爬虫语言最好用的是那种?

目前最好用的爬虫语言有多种选择,具体的选择取决于你的需求和个人偏好。Python是较为流行的爬虫语言之一,其生态系统丰富,拥有大量优秀的爬虫框架和工具。另外,JavaScript、Go、Ruby等编程语言也可以用于爬虫开发。总之&#xff0…

设置ubuntu下SVN服务开机自启

目录 0.背景环境 1.开机自启步骤 0.背景环境 1)ubuntu下,已搭建好svn版本库,具体搭建方法参考文末的其他博客链接 2)在搭svn服务器的过程中,发现ubuntu重启后,svn服务就关闭了 svn正常开启时见下图 所以…

为什么大多数企业数字化转型失败率高达80%?

数字化转型失败率为什么这么高? 多年的转型研究表明,企业数字化转型的成功率还不到 30%。 麦肯锡2023年报告显示,只有 16% 的受访者表示他们组织的数字化转型成功地提高了绩效,并使他们能够长期维持变革。 即使是精通数字技术的行…

十五周算法训练营——回溯算法

今天是十五周算法训练营的第十周,主要讲回溯算法专题。(欢迎加入十五周算法训练营,与小伙伴一起卷算法) 解决一个回溯问题,实际上就是一个决策树的遍历过程,只需要思考三个问题: 路径&#xff1…

市值暴涨8000亿,马斯克告诉了美国同行,为啥需要中国市场?

马斯克访华仅仅40多个小时,却带动了股价连涨5天,涨幅最高达到20%,市值飙涨8000亿元人民币,马斯克也因此再度问鼎全球首富之位,凸显出中国之行给他带来的巨大好处。 一、中国市场带动了特斯拉的辉煌 2018年马斯克为产能…

依据换行符分割字符串numpy.char.splitlines()含换行符与回车符的区别

【小白从小学Python、C、Java】 【等级考试500强双证书考研】 【Python-数据分析】 依据换行符分割字符串 numpy.char.splitlines() 含换行符与回车符的区别 [太阳]选择题 以下说法错误的是: import numpy as np a "I\nLove\rChina\r\nforever" print(&q…

APACHE-ATLAS-2.1.0 - 安装HIVE HOOK(六)

写在前面 本博文以获取HIVE元数据为例,进行流程和源码的分析。 请提前安装好HADOOP和HIVE的环境,用于测试。 ATLAS官网:https://atlas.apache.org/#/HookHive ATLAS支持的元数据源 什么是Hive Hook(钩子) HOOK是一种…

可视化的三种图结构方案 (canvas、fabric、G6)

原生 canvas、fabric 以及 G6,三种方案各有优劣势 原生 canvasfabricG6优点灵活、自由、可定制化非常强封装了 canvas 的 api,使用简单灵活提供了复杂树、图等 api,只需要按照文档配置即可缺点开发复杂、耗时对于构建大型树、图等复杂、耗时…

chatgpt赋能python:选择函数:Python实现之道

选择函数:Python 实现之道 什么是选择函数? 在 SEO 中,选择函数是指搜索引擎在对网站内容进行排名时所采用的一种规则。选择函数由搜索引擎定义,其目的在于建立一个算法来确定哪些网站会出现在搜索结果的前几页中。对于网站管理…

百度视频质量评测的实践之路

视频编解码技术日新月异,新的编解码技术赋予视频业务新的应用场景和新的用户视听体验。同时,视频作为带宽消耗大户,如何在视听体验和视频带宽之间取得最优的平衡是一个永恒的话题。视频质量评测主要用来回答:体验是否改善、带宽是…

chatgpt赋能python:如何用Python制作动画?

如何用Python制作动画? Python作为一种优秀的编程语言,可以用于不同领域的编程。其中,Python也可以被用于创建动画。使用Python的主要好处之一是其强大的Matplotlib库,它可以帮助我们更轻松地创建可视化效果。 什么是Matplotlib…

chatgpt赋能python:Python如何取出List中的数据

Python如何取出List中的数据 在Python中,列表(List)是一种非常常见的数据类型,它可以存储任意类型的数据,并且可以按照下标索引来访问其中的元素。本篇文章将介绍如何使用Python来取出List中的数据。 常规方法 在Py…

Android BlueToothBLE入门(一)——低功耗蓝牙介绍

学更好的别人, 做更好的自己。 ——《微卡智享》 本文长度为3150字,预计阅读8分钟 前言 距上篇文章发布都一个多月了,先声明,我可不会停更。这么长时间没更新文章,其实原因就三点: 原因一是工作上事确实多&…

JavaScript之事件(十)

JavaScript之事件 1、事件绑定2、事件类型3、事件的传播4、事件对象1、事件对象常用的属性2、事件对象常用的方法 事件可用于处理、验证用户输入、用户动作和浏览器动作。 1、事件绑定 事件绑定就是给HTML标签绑定特定的事件,当该事件触发,则会执行相应的…

一款射频芯片的layout设计指导案例-篇章2

《一款射频芯片的layout设计指导案例-篇章1》中,我们阐述了RTL8762元件布局顺序、DC/DC电路元件布局走线、电源Bypass布局规范、外部flash布局走线、RF布局走线, 本篇阐述晶振、ESD、板层等相关指导建议—— 40MHz晶振布局走线规范 在没有结构限制情况下…

chatgpt赋能python:Python如何在同一行输入三个数?

Python如何在同一行输入三个数? Python语言是一门广泛使用的编程语言,被广泛应用于数据分析、机器学习、Web开发、科学计算、人工智能等领域。但是,有时候我们需要在同一行输入多个变量或数字,这可能给一些初学者带来一些困惑。本…

暑期实习开始啦「GitHub 热点速览」

作者:HelloGitHub-小鱼干 无巧不成书,刚好最近有小伙伴在找实习,而 GitHub 热榜又有收录实习信息的项目在榜。所以,无意外本周特推就收录了这个实习项目,当然还有国内版本。除了应景的实习 repo 之外,还有帮…