PyQt5.QtCore.QThread的初始化函数__init__()介绍
发布时间:2023-12-15 23:09:13
PyQt5.QtCore.QThread是用于创建多线程的类。它使用了C++的QThread类,在PyQt5中进行了封装。QThread类允许在一个单独的线程中执行耗时的操作,以防止阻塞主线程。
QThread类的初始化函数__init__()是用于创建一个新的QThread对象的。它可以接受一个可选的父对象参数,以将新创建的线程对象指定为另一个对象的子对象。
下面是一个使用PyQt5.QtCore.QThread类的示例:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
from PyQt5.QtCore import QThread, pyqtSignal
class WorkerThread(QThread):
# 自定义信号,用于在线程执行完毕后发出信号通知主线程
finished = pyqtSignal()
def __init__(self):
super().__init__()
def run(self):
# 执行耗时操作的代码
for i in range(5):
print("Working...", i)
self.finished.emit() # 发出finished信号
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setWindowTitle("Example")
self.setGeometry(300, 300, 300, 200)
# 创建按钮并将其连接到启动线程的槽函数
self.button = QPushButton("Start", self)
self.button.clicked.connect(self.startWorkerThread)
self.button.setGeometry(100, 80, 100, 30)
def startWorkerThread(self):
# 创建并启动WorkerThread线程
self.workerThread = WorkerThread()
self.workerThread.finished.connect(self.workerThreadFinished)
self.workerThread.start()
def workerThreadFinished(self):
print("WorkerThread finished")
if __name__ == "__main__":
app = QApplication(sys.argv)
mainWindow = MainWindow()
mainWindow.show()
sys.exit(app.exec_())
在上面的示例中,我们定义了一个WorkerThread类,它继承自QThread,并包含了自定义的finished信号。在run()方法中,我们编写了耗时操作的代码,并在操作完成后发出finished信号。
MainWindow类继承自QMainWindow,并在initUI()方法中创建了一个按钮。点击按钮后,会创建并启动一个WorkerThread线程,并在线程完成后输出一条消息。
通过上面的代码,我们可以看到QThread类的初始化函数__init__()并没有做太多的事情,它只是调用了父类的初始化函数。
由于QThread对象的创建和使用相对独立,__init__()函数一般不需要传递太多的参数,只需要简单地初始化一些属性即可。其他的功能,如线程的启动、停止、阻塞等,则需要使用QThread类提供的其他方法来实现。
