Products
GG网络技术分享 2025-11-21 01:20 2
但我觉得题主兴许是需要定时沉绘, 有时候界面会卡住或不刷新鲜,和qt的沉绘机制有关,这时要手动沉绘。再说一个这玩意儿问题hen奇怪, pyqt只是个库...

QThread是PyQt中用许多线程Zui常用的类之一,它Neng在后台施行耗时操作,不会阻塞主线程的UI响应。
在PyQt中, 单线程指的是只有一个Qt信号事件循环,全部信号和槽函数dou是在这玩意儿循环中处理的。在UI线程中施行耗时操作会阻塞循环, 弄得UI无响应,QThreadNeng实现将耗时操作放到另一个线程中施行,一边不关系到UI线程。
继承QThread方式:
from PyQt5.QtCore import QThread, pyqtSignal
class MyThread:
start_signal = pyqtSignal # 自定义信号
def __init__:
super.__init__
def run:
self.start_signal.emit # 发射信号
沉写QRunnable方式:
from PyQt5.QtCore import QRunnable
class MyRunnable:
def __init__:
super.__init__
def run:
pass # 施行耗时操作
QThread自带了一些信号,Neng用来在进程间传信。常用的信号有:
除此之外还Neng自定义信号,用来在线程内和线程间传递数据。
start启动线程
terminate终止线程
wait等待线程施行收尾
不要在子线程中直接操作UI,基本上原因是UI只Neng在主线程中geng新鲜
不要在主线程中等待子线程的收尾,会弄得UI卡顿
不要在子线程中用PyQt的全局变量或模块,基本上原因是它们兴许会与主线程产生冲突
Demand feedback