当前位置: 首页 > news >正文

python之pyqt专栏5-信号与槽1

    

         在上一篇文章,我们了解到如果想要用代码改变QLabel的文本内容,可以调用QLabel类的text()函数。

        但是现在有个这样的需求,界面中有一个Button与一个Label,当点击Button时,将Label的内容改变为“Hello world!”

创建项目

        创建新项目,运行QtDesigner,设计UI界面

        对象列表

对象名类名
labelQLabel
pushbuttonQPushButton

         UI界面

 main.py 代码如下

# 导入sys模块
import sys
# PyQt6.QtWidgets模块中导入QApplication, QWidget
from PyQt6.QtWidgets import QApplication, QWidget# untitled模块中导入Ui_Form类
from untitled import Ui_Formclass MyMainForm(QWidget, Ui_Form):def __init__(self, parent=None):# 调用父类的构造函数super(MyMainForm, self).__init__(parent)# 调用继承Ui_Form过来的setupUi函数self.setupUi(self)self.pushButton.clicked.connect(self.labelSet)def labelSet(self):self.label.setText("Hello world")# Press the green button in the gutter to run the script.
if __name__ == '__main__':# 实例化应用app = QApplication(sys.argv)# 实例化MyMainFormmyw = MyMainForm()myw.show()# 启动应用程序的事件循环并等待用户交互,直到应用程序关闭。sys.exit(app.exec())

解析实现

        在main.py中,相当于python之pyqt专栏2-项目文件解析-CSDN博客的main.py只添加了下面的代码。

         self.pushButton.clicked.connect(self.labelSet)def labelSet(self):self.label.setText("Hello world")

       先看下面的labelSet(),这是个函数,里面执行的代码是self.label.setText("Hello world"),也就是将label的文本内容设置为“Hello world”。实现了需求功能是将Label的内容改变为“Hello world!”

        在QAbstractButton,signals可以看到有clicked,clicked是一个信号,当按钮被激活(即鼠标光标在按钮内部时按下然后释放),此信号被发出。

         信号是类的属性,换句话就是clicked信号是QAbstractButton的一个属性。

 

         connect,是将信号与槽函数连接的关联起来的函数。槽函数是通过connect与信号绑定的函数。

 self.pushButton.clicked.connect(self.labelSet)

           这句话的意思是,将pushButton的信号clicked,通过connect连接,绑定了槽函数labelSet ,也就是说当按钮被按下时,pushButton会发出clicked信号,然后激活了(调用)槽函数labelSet,

        因此新增的这些代码实现了,当点击Button时,将Label的内容改变为“Hello world!”

相关文章:

  • 钉钉聊天审计软件有哪些
  • web前端之vue3
  • cyclictest 交叉编译与使用
  • 【ArcGIS Pro微课1000例】0040:ArcGIS Pro创建北极点、南极点
  • 公平锁和非公平锁以及他们的实现原理是什么
  • YOLOv5算法进阶改进(7)— 将主干网络SPPF更换为SimSPPF / SPP-CSPC / SPPF-CSPC
  • node.js-连接SQLserver数据库
  • 谨慎Apache-Zookeeper-3.5.5以后在CentOS7.X安装的坑
  • 程序员学习方法
  • Hdoop学习笔记(HDP)-Part.19 安装Kafka
  • Elasticsearch-Kibana使用教程
  • Vue中mvvm的作用
  • 「Verilog学习笔记」自动贩售机2
  • H265、VP9、AV1视频编码器性能对比
  • drawio 流程图以图片保存
  • [nginx文档翻译系列] 控制nginx
  • 《Java编程思想》读书笔记-对象导论
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • CSS 三角实现
  • JAVA 学习IO流
  • Java|序列化异常StreamCorruptedException的解决方法
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Laravel Telescope:优雅的应用调试工具
  • Laravel5.4 Queues队列学习
  • OSS Web直传 (文件图片)
  • Python实现BT种子转化为磁力链接【实战】
  • Vue 重置组件到初始状态
  • Windows Containers 大冒险: 容器网络
  • 大型网站性能监测、分析与优化常见问题QA
  • 构建工具 - 收藏集 - 掘金
  • 回流、重绘及其优化
  • 近期前端发展计划
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 免费小说阅读小程序
  • MyCAT水平分库
  • ​用户画像从0到100的构建思路
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #includecmath
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (编译到47%失败)to be deleted
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (接口封装)
  • (力扣)1314.矩阵区域和
  • (算法)Travel Information Center
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET 材料检测系统崩溃分析
  • .net 生成二级域名
  • .Net8 Blazor 尝鲜
  • .net下的富文本编辑器FCKeditor的配置方法