pyqt5终止线程QtCore.QThread运行,安全终止例子
时间: 2024-05-11 15:14:54 浏览: 155
:你可以使用QThread的方法requestInterruption()来请求终止线程,并在线程内部使用isInterruptionRequested()方法来检查是否已请求终止。以下是一个简单的例子:
```
import sys
import time
from PyQt5.QtCore import QThread, pyqtSignal
class Worker(QThread):
finished = pyqtSignal()
def run(self):
while True:
print("Working...")
time.sleep(1)
if self.isInterruptionRequested():
print("Worker stopped.")
self.finished.emit()
return
class MainApp:
def __init__(self):
self.worker = Worker()
self.worker.finished.connect(self.on_worker_finished)
self.worker.start()
def on_worker_finished(self):
print("Thread finished.")
# Safe way to exit app
if not self.worker.isRunning():
sys.exit()
if __name__ == "__main__":
app = MainApp()
sys.exit(app.exec_())
```
在上面的例子中,我们创建了一个Worker类,它继承自QThread。在run方法中,我们不断地打印“Working...”,然后使用isInterruptionRequested()方法来检查是否已请求终止线程。如果请求了终止,我们打印“Worker stopped.”并发射finished信号。
在MainApp中,我们创建了一个Worker实例并启动它。我们还连接了finished信号到on_worker_finished槽函数。在on_worker_finished中,我们打印“Thread finished.”并检查线程是否已经停止运行。如果是,我们调用sys.exit()来安全地退出应用程序。
希望这个例子能帮助你。有任何问题,请随时问我。
阅读全文