中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

pyqt的子窗口怎么創建線程

小億
92
2023-11-04 11:40:23
欄目: 編程語言

在PyQt中創建子窗口的線程可以使用QThread類。以下是一個簡單的示例:

from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget


class WorkerThread(QThread):
    finished = pyqtSignal()

    def run(self):
        # 在這里執行需要在子線程中運行的任務
        # ...

        self.finished.emit()


class SubWindow(QWidget):
    def __init__(self, parent=None):
        super(SubWindow, self).__init__(parent)
        self.button = QPushButton("Start", self)
        layout = QVBoxLayout(self)
        layout.addWidget(self.button)
        self.setLayout(layout)
        self.button.clicked.connect(self.start_worker_thread)

    def start_worker_thread(self):
        self.worker_thread = WorkerThread()
        self.worker_thread.finished.connect(self.worker_thread_finished)
        self.worker_thread.start()

    def worker_thread_finished(self):
        # 在這里處理子線程結束后的操作
        # ...


class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.sub_window = SubWindow(self)
        self.setCentralWidget(self.sub_window)


if __name__ == '__main__':
    app = QApplication([])
    main_window = MainWindow()
    main_window.show()
    app.exec_()

在這個例子中,我們創建了一個WorkerThread類,繼承自QThread。在WorkerThread類的run()方法中,我們可以執行需要在子線程中運行的任務,然后發出finished信號表示任務完成。

SubWindow類的start_worker_thread()方法中,我們創建了一個WorkerThread實例,并連接了finished信號到worker_thread_finished()方法。然后,我們調用start()方法啟動子線程。

worker_thread_finished()方法中,我們可以處理子線程結束后的操作。

最后,我們創建了一個MainWindow類,把SubWindow作為其中央窗口。在MainWindow中,我們創建了一個SubWindow實例,并顯示主窗口。

當點擊SubWindow中的按鈕時,會啟動子線程執行任務,并在任務完成后進行相應的處理。

0
名山县| 平利县| 保山市| 年辖:市辖区| 泰和县| 濉溪县| 鄂托克前旗| 阜新市| 泸水县| 柳林县| 南乐县| 乃东县| 鸡泽县| 横峰县| 汶川县| 新竹市| 北票市| 普陀区| 井冈山市| 弋阳县| 巨野县| 乐陵市| 湘潭市| 章丘市| 龙口市| 滨海县| 林西县| 禄劝| 渝中区| 开封县| 彭水| 洞口县| 贵溪市| 涿州市| 郸城县| 抚远县| 白玉县| 峨山| 永新县| 贵州省| 康平县|