You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PROFIBUS/UI/LoadingDataWidget.py

63 lines
1.9 KiB
Python

import sys
import time
from PyQt5.QtWidgets import QApplication, QWidget, QDialog, QVBoxLayout, QPushButton, QLabel, QProgressBar
from PyQt5.QtCore import Qt, QThread, pyqtSignal, pyqtSlot
from UI.SearchAddressWidget import CustomProgressBar
class LoadDataThread(QThread):
progress = pyqtSignal(int)
def run(self):
for i in range(101):
time.sleep(0.01) # 模拟数据加载过程
self.progress.emit(i)
class LoadingDataWidget(QDialog):
# loadDataSignal = pyqtSignal(int, int)
def __init__(self, refreshType = None):
super().__init__()
self.refreshType = refreshType#判断是单次刷新还是整体加载数据
self.initUI()
# self.loadDataSignal.connect(self.loadData)
def initUI(self):
vbox = QVBoxLayout()
self.label = QLabel("加载数据中,请稍后...", self)
self.progressBar = CustomProgressBar(self)
vbox.addWidget(self.label)
vbox.addWidget(self.progressBar)
if self.refreshType:
self.thread = LoadDataThread()
self.thread.progress.connect(self.singleLoadData)
self.thread.start()
self.setLayout(vbox)
self.setWindowTitle('数据查询')
self.setWindowFlags(Qt.Window | Qt.WindowTitleHint | Qt.CustomizeWindowHint)
self.setModal(True)
# def loadSignalEmit(self, maxValue:int, value:int):
# # print(maxValue, value)
# self.loadDataSignal.emit(maxValue, value)
@pyqtSlot(int, int)
def loadData(self, maxValue:int, value:int):
self.progressBar.setMaximum(maxValue)
self.progressBar.setValue(value)
if maxValue == value:
self.accept()
def singleLoadData(self, value):
value *= 4
self.loadData(100, value)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = LoadingDataWidget()
sys.exit(app.exec_())