在PyQt5中,将子线程集成到现有的信号和槽中
在PyQt5中,可以使用QThread类来创建子线程。下面是一个示例代码,展示了如何在已有的信号和槽中加入子线程:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
from PyQt5.QtCore import QThread, pyqtSignal
class WorkerThread(QThread):
finished = pyqtSignal()
def run(self):
# 在子线程中执行耗时操作
# ...
# 发射finished信号,表示子线程执行完毕
self.finished.emit()
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.button = QPushButton("Start", self)
self.button.clicked.connect(self.startWorkerThread)
def startWorkerThread(self):
# 创建子线程
self.workerThread = WorkerThread()
self.workerThread.finished.connect(self.workerThreadFinished)
# 启动子线程
self.workerThread.start()
def workerThreadFinished(self):
# 子线程执行完毕后的处理
# ...
# 删除子线程对象
self.workerThread.deleteLater()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
在上面的代码中,WorkerThread类继承自QThread,并且定义了一个finished信号。在run方法中执行耗时操作,并在执行完毕后发射finished信号。
在MainWindow类中,通过点击按钮来启动子线程。在startWorkerThread方法中,创建WorkerThread对象,并将其finished信号连接到workerThreadFinished方法。然后调用start方法启动子线程。
在workerThreadFinished方法中,可以处理子线程执行完毕后的操作。最后,通过调用deleteLater方法删除子线程对象。
原文地址: https://www.cveoy.top/t/topic/pLg1 著作权归作者所有。请勿转载和采集!