64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
import sys
|
|
import time
|
|
from PySide6.QtWidgets import QApplication, QMainWindow, QProgressBar, QVBoxLayout, QWidget, QPushButton
|
|
from PySide6.QtCore import QThread, Signal
|
|
|
|
|
|
class WorkerThread(QThread):
|
|
progress_updated = Signal(int) # 进度更新信号
|
|
finished = Signal() # 完成信号
|
|
|
|
def run(self):
|
|
# 模拟耗时操作
|
|
for i in range(1, 101):
|
|
time.sleep(0.05) # 模拟耗时操作
|
|
self.progress_updated.emit(i) # 发射进度信号
|
|
self.finished.emit()
|
|
|
|
|
|
class MainWindow(QMainWindow):
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
self.setWindowTitle("独立进度条示例")
|
|
self.setGeometry(100, 100, 400, 200)
|
|
|
|
# 创建进度条
|
|
self.progress_bar = QProgressBar()
|
|
self.progress_bar.setRange(0, 100)
|
|
|
|
# 创建开始按钮
|
|
self.start_button = QPushButton("开始加载")
|
|
self.start_button.clicked.connect(self.start_loading)
|
|
|
|
# 设置布局
|
|
layout = QVBoxLayout()
|
|
layout.addWidget(self.progress_bar)
|
|
layout.addWidget(self.start_button)
|
|
|
|
container = QWidget()
|
|
container.setLayout(layout)
|
|
self.setCentralWidget(container)
|
|
|
|
# 初始化工作线程
|
|
self.worker_thread = WorkerThread()
|
|
self.worker_thread.progress_updated.connect(self.update_progress)
|
|
self.worker_thread.finished.connect(self.loading_finished)
|
|
|
|
def start_loading(self):
|
|
self.start_button.setEnabled(False)
|
|
self.worker_thread.start()
|
|
|
|
def update_progress(self, value):
|
|
self.progress_bar.setValue(value)
|
|
|
|
def loading_finished(self):
|
|
self.start_button.setEnabled(True)
|
|
# 这里可以添加加载完成后的操作
|
|
|
|
|
|
if __name__ == "__main__":
|
|
app = QApplication(sys.argv)
|
|
window = MainWindow()
|
|
window.show()
|
|
sys.exit(app.exec()) |