PySide6技巧--多线程和信号发送函数

多线程

多线程有多种方法实现,我这里主要是引用QThread线程
多线程能解决接受信息刷新日志堵塞问题,
因为我们在运行程序都是在一个主线程下的也就是这一段代码

app.exec_()

所以一旦遇到信息量过大难免会出现不能及时刷新界面还有会使程序直接卡死,反正会出现很奇奇怪怪的bug,会很影响使用

from threading import Thread

引入
PySide6技巧--多线程和信号发送函数
创新线程也很简单的,需要在新子线程下加这两段代码

        t = Thread(target=run)
        t.start()

t对Thread实例化,然后run其实就是你的目标执行函数。
对于一些实时刷新数据用多线程能减少界面卡顿的bug

信号发送

因为我们的界面控件比如像按键,文本框等,都是不断地等待信号,当点击按键的时候都会触发回调函数
比如像这样PySide6技巧--多线程和信号发送函数
当我点击这个disconnection的按键的时候,会给到这个Slot的这个装饰器上面处理,然后触发相对应的回调函数。
因为在某些需求上我们还是需要用自己要求的触发函数,但是在Qt里面确只有控件才有自己的发送信号,然后触发相对应的函数,而有些时候利用好发送信号函数能能轻松地调用其他执行函数。

from PySide6 import QtCore, QtWidgets

我们先引入这个
然后自定义信号源对象类型,一般都是在类里面

class MySignals(QObject):
    signal= Signal(str,str)

要注意的是在你类里面是需要继承QObject的
定义一种信号,两个参数 类型分别是: 字符串和 字符串
发信号时,传入参数 必须是这里指定的 参数类型,像这里的两个参数都必须要是字符串
然后PySide6技巧--多线程和信号发送函数
然后在你需要的地方加

self.signal.emit(XXXX,XXXX)

传入的参数就是那两个字符串,这样就做好一个信号发送

上一篇:Selenium(17):浏览器多窗口操作


下一篇:解决 DeprecationWarning: Executable executable_path has been deprecated, please pass in a Service obje