高手进阶之路---pyqt自定义信号

高手进阶之路---pyqt自定义信号

1.思考问题为什么要自定义信号,qt5本身已有信号槽函数

python 复制代码
# pushButton 被clicked的时候connect 函数print
self.pushButton.clicked.connect(self.print)

def print(self):
	print("我被点击了")

或者使用

python 复制代码
# 需要引入 pyqtSlot 库函数
from PyQt5.QtCore import pyqtSlot

@pyqtSlot() #装饰器,此函数没有connect直接通过装饰器初始化连接槽函数
# 使用此装饰器,需要规定函数命名方式:on_qt部件_clicked(self)
def on_pushButton_clicked(self):
	print("我点击了")

看上去确实很简单,但是我们在编写比较耗时的程序的时候,就会发现我们点击了控件我们的UI界面卡死了,直到主程序运行完成,这是因为我们的主程序在运行我们的代码,不能在去执行其他的操作导致的,所以我们就要使用了多线程,多线程就需要我们自定义信号和槽函数,方法如下:

python 复制代码
from PyQt5.QtCore import pyqtSignal, QObject


class Signal(QObject):
    # 实例化pyqtSignal,声明一个信号signal
    signal = pyqtSignal(str)  # 这里可以是str,list,int

    def __init__(self):
        super().__init__()

    def connect_signal(self):
        # 将信号连接到指定的槽函数call_signal
        self.signal.connect(self.call_signal)
        # 将信号断开连接到指定的槽函数call_signal
        self.signal.disconnect(self.call_signal)
        # 使用emit发射信号
        self.signal.emit('你好啊')

    def call_signal(self, msg):
        """接收emit发送的数据的函数"""
        print('槽函数信息', msg)


if __name__ == '__main__':
    ui= Signal()
    ui.connect_signal()
相关推荐
懷淰メ1 天前
python3GUI--【AI加持】基于PyQt5+YOLOv8+DeepSeek的智能球体检测系统:(详细介绍)
yolo·目标检测·计算机视觉·pyqt·检测系统·deepseek·球体检测
mortimer9 天前
【实战复盘】 PySide6 + PyTorch 偶发性“假死”?由多线程转多进程
pytorch·python·pyqt
S***y39610 天前
算法挑战算法的广泛应用,它们也带来了一系列挑战,这些挑战不仅关乎技术层面,更涉及伦理、法律和社会等多个维度。
kafka·pyqt·宽度优先
AI视觉网奇11 天前
pyqt 横竖屏切换
pyqt
mortimer15 天前
从零打造一款桌面实时语音转文字工具:PySide6 与 Sherpa-Onnx 的实践
python·github·pyqt
开心-开心急了16 天前
PySide6/PyQt Ctrl 滚轮 实现文本缩放功能
pyqt·pyside
B站_计算机毕业设计之家19 天前
深度学习:Yolo水果检测识别系统 深度学习算法 pyqt界面 训练集测试集 深度学习 数据库 大数据 (建议收藏)✅
数据库·人工智能·python·深度学习·算法·yolo·pyqt
懷淰メ20 天前
python3GUI--短视频社交软件 By:Django+PyQt5(前后端分离项目)
后端·python·django·音视频·pyqt·抖音·前后端
开心-开心急了21 天前
pyside6实现win10自动切换主题
开发语言·python·pyqt·pyside