PyQt5 查看線(xiàn)程是否存在 DATE: 2026-05-05 08:36:49
在PyQt5中,線(xiàn)程我們可以使用QThread類(lèi)來(lái)創(chuàng )建和管理線(xiàn)程,否存要查看線(xiàn)程是線(xiàn)程否存在,可以使用isFinished()方法,否存這個(gè)(ge)方法返回一個(gè)布爾值,線(xiàn)程表示線(xiàn)程是否存否已經(jīng)完成執行。
以下是否存一個(gè)簡(jiǎn)單的示例:
1、導(′_ゝ`)入所需的線(xiàn)程庫:
from PyQt5.QtCore import QThread, QOb(′▽?zhuān)?ject, pyqtSignalimport sysimport time
2、創(chuàng )建一個(gè)(ge)自定義的否存線(xiàn)程類(lèi),繼承自QThread:
class MyThread(QThread): # 定義一個(gè)信號,線(xiàn)程用于(yu)在子線(xiàn)程完成時(shí)通知主線(xiàn)程 finis(′-ι_-`)hed_signal = pyqtSignal() def run(self): # 模擬線(xiàn)程執行任務(wù) for i in range(5): time.sleep(1) print("??;子線(xiàn)程執行中...") # 完成任務(wù)后(′▽?zhuān)?,否存發(fā)送信號給主線(xiàn)程 self.finished_si??gnal.emit()
3、線(xiàn)程在主??窗口類(lèi)中,否存創(chuàng )建一個(gè)MyTh(????)read實(shí)例,線(xiàn)程并連接到finished_signal信號:
class MainWindow(QObject): def __init(????)__(self): super().__init__() self.my_thヽ(′ー`)ノread = MyThread() self.my_thread.finished_signal.connect(self.on_thread_finished)
4、實(shí)現on_thread_finished槽函數,用于處理線(xiàn)程完成時(shí)的邏輯:
def(′ω`) on_thread_finished(self): print(&quo??t;子線(xiàn)程已完成執行")
5、在主窗口類(lèi)的__init__方法中,(//ω//)啟動(dòng)子線(xiàn)程:
def __init__(self): super().__init__() self.my_thread = MyThread() self.my??_thread.finished_signal.connect(self.on_thread_finished) # 啟動(dòng)子線(xiàn)程?? self.my_(╬ ò﹏ó)thread┐(′д`)┌.start()
6、在主窗口類(lèi)的__del__方法中,檢查線(xiàn)程是否存在,如果存在則等待其完成:
def __del__(self): if self.my_thread is not None: if self.my_t??hread.isRunning(): print("子線(xiàn)程正在運行,等待其完成") self.my_thread.wait() elif self??.my_thread.isFinished(): print("子線(xiàn)程已完成執行&??quot;) else: print("子線(xiàn)程不存??在") del self.my_thread7、創(chuàng )建一個(gè)主窗口實(shí)例并運行程序:
if __name__ == "__main__": app = QApplication(sys.argv) main_window = MainWindow() sys.exit(ap??p.exec_())
通過(guò)以上代碼,我們可以輕松地查看PyQt5中的線(xiàn)程是否存在,當子線(xiàn)程完成執行時(shí),我們可以獲取到相應??的信號并進(jìn)行處理。

