需求是这样的:主线程需要把一些耗时操作放在子线程中执行,子线程执行完毕后通知主线程更新 UI。但是子线程只有一个,且耗时操作必须一个一个来,不能并发执行。怎么让子线程挨个执行主线程下发的命令呢?
解决办法就是:主线程把需要执行的命令放在一个队列里,子线程不断去读取队列里的命令,然后挨个读取出来执行,执行完毕之后通知主线程更新 UI。在这里,主线程相当于生成者(生产命令),子线程相当于消费者(消费命令)。在这里,只有一个生产者和一个消费者,是最简单的生产者消费者模型。
我这里有个样例程序,点击发送就是向子线程发送命令,子线程获取到命令后就开始执行,然后发信号通知主线程更新 UI。

完整代码如下:
import datetime
from PySide2.QtCore import QThread, QObject, Signal, Slot
from PySide2.QtWidgets import QApplication, QInputDialog, QDialog, QLineEdit, QPushButton, QVBoxLayout, QLabel
import util
class MyInputDialog(QDialog):
def __init__(self):
super().__init__()
#
# 输入框
#
self.input = QLineEdit()
#
# label 标签
#
self.label_1 = QLabel()

最低0.47元/天 解锁文章

164

被折叠的 条评论
为什么被折叠?



