给我举个例子
时间: 2023-08-12 16:23:39 浏览: 109
my example
好的,以下是一个简单的例子:
假设有一个 QThread 类型的子线程,其中 run() 函数中有一个无限循环,每次循环都会输出一句话。主线程中创建该子线程对象,然后调用 start() 函数启动线程。同时,在主线程中调用 wait() 函数等待子线程执行完毕。当主线程收到退出信号后,会调用 quit() 函数停止子线程的执行。
```python
import sys
from PyQt5.QtCore import QThread, pyqtSignal
class Worker(QThread):
finished = pyqtSignal()
def run(self):
while True:
print("Hello from Worker")
def stop(self):
self.quit()
if __name__ == "__main__":
worker = Worker()
worker.start()
worker.finished.connect(app.exit)
app.exec_()
worker.stop()
worker.wait()
```
在上述代码中,子线程中的无限循环会一直输出 "Hello from Worker",直到主线程调用 stop() 函数并等待子线程执行完毕。在主线程中,我们连接了子线程的 finished 信号到应用程序的退出函数上,以便子线程执行完毕后能够正确退出。此外,我们还在主线程中调用了 worker.stop() 函数来停止子线程的执行,然后调用 worker.wait() 函数等待子线程执行完毕。当子线程执行完毕后,主线程会继续执行,从而退出应用程序。
阅读全文