PySide2如何加载耗时组件

QTherad方式

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time:2023/9/25 10:12
# @Software:PyCharm
__author__ = "JentZhang"

from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLabel
from PySide2.QtCore import QThread, Signal


class Worker(QThread):
    finished_signal = Signal(str)

    def run(self):
        # 模拟耗时任务
        import time
        time.sleep(3)
        self.finished_signal.emit("Task Finished!")


class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.layout = QVBoxLayout(self)
        self.label = QLabel("Press the button to start the task.")
        self.button = QPushButton("Start Task")

        self.layout.addWidget(self.label)
        self.layout.addWidget(self.button)

        self.button.clicked.connect(self.startTask)

    def startTask(self):
        self.worker = Worker()
        self.worker.finished_signal.connect(self.onTaskFinished)
        self.label.setText("Task is running...")
        self.button.setEnabled(False)
        self.worker.start()

    def onTaskFinished(self, message):
        self.label.setText(message)
        self.button.setEnabled(True)


app = QApplication([])
window = MainWindow()
window.show()
app.exec_()

QTimer方式

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time:2023/9/25 10:28
# @Software:PyCharm
__author__ = "JentZhang"

from PySide2.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel
from PySide2.QtCore import QTimer

app = QApplication([])


class MainWindow(QWidget):
    def __init__(self):
        super(MainWindow, self).__init__()

        self.layout = QVBoxLayout(self)
        self.label = QLabel("Loading...")
        self.layout.addWidget(self.label)

        # 使用 QTimer 延迟加载
        QTimer.singleShot(1000, self.loadComponent)

    def loadComponent(self):
        # 这里模拟了一个耗时的加载过程
        # 实际应用中,这里可以是真正的组件加载代码
        self.label.setText("Component Loaded!")


window = MainWindow()
window.show()
app.exec_()

posted on 2023-09-25 10:26  JentZhang  阅读(14)  评论(0编辑  收藏  举报