Qt学习过程3--线程和自定义信号

1、线程3句话

#设置线程名称为q
q = threading.Thread(target=,ags=())#线程优先检索内层函数,target=线程目标函数
q.setDaemon(True)#线程守护,主断这也断
q.start()

2、自定义信号

        自定义信号其实就是在传递参数

        (定义信号->连接信号与槽->通过emit在需要的地方发出信号)

from PySide2.QtWidgets import QApplication, QTextBrowser
from PySide2.QtUiTools import QUiLoader
from threading import Thread

from PySide2.QtCore import Signal,QObject

# 自定义信号源对象类型,一定要继承自 QObject
class MySignals(QObject):

    # 定义一种信号,两个参数 类型分别是: QTextBrowser 和 字符串
    # 调用 emit方法 发信号时,传入参数 必须是这里指定的 参数类型
    text_print = Signal(QTextBrowser,str)

    # 还可以定义其他种类的信号
    update_table = Signal(str)

# 实例化
global_ms = MySignals()    

class Stats:

    def __init__(self):
        self.ui = QUiLoader().load('main.ui')

        # 自定义信号的处理函数
        global_ms.text_print.connect(self.printToGui)


    def printToGui(self,fb,text):
        fb.append(str(text))
        fb.ensureCursorVisible()

    def task1(self):
        def threadFunc():
            # 通过Signal 的 emit 触发执行 主线程里面的处理函数
            # emit参数和定义Signal的数量、类型必须一致
            global_ms.text_print.emit(self.ui.infoBox1, '输出内容')
        
        thread = Thread(target = threadFunc )
        thread.start()

    def task2(self):
        def threadFunc():
            global_ms.text_print.emit(self.ui.infoBox2, '输出内容')

        thread = Thread(target=threadFunc)
        thread.start()

        2、1  代码拆解--定义信号

class MySignals(QObject):
    # 定义一种信号,两个参数 类型分别是: QTextBrowser 和 字符串
    # 调用 emit方法 发信号时,传入参数 必须是这里指定的 参数类型

    text_print = Signal(QTextBrowser, str)#在这里定义信号传递的参数

    # 还可以定义其他种类的信号
    update_table = Signal(str)


# 实例化对象
global_ms = MySignals()

        2、2  代码拆解--连接信号和槽 

class Stats:

    def __init__(self):
        self.ui = QUiLoader().load('main.ui')

        # 自定义信号的处理函数
        global_ms.text_print.connect(self.printToGui)#起连接作用

    def printToGui(self, fb, text):#这个就是槽
        fb.append(str(text))
        fb.ensureCursorVisible()

        2、3  代码拆解--发出信号

    def task1(self):
        def threadFunc():
            # 通过Signal 的 emit 触发执行 主线程里面的处理函数
            # emit参数和定义Signal的数量、类型必须一致
            # emit可能就是用来声明发出信号的
            global_ms.text_print.emit(self.ui.infoBox1, '输出内容')#信号发出

        thread = Thread(target=threadFunc)
        thread.start()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值