-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp_ui_sub.py
More file actions
49 lines (39 loc) · 1.84 KB
/
Copy pathapp_ui_sub.py
File metadata and controls
49 lines (39 loc) · 1.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
from PyQt5 import QtCore, QtGui, QtWidgets
class PopUpProgressBar(QtWidgets.QDialog):
abort = QtCore.pyqtSignal()
def __init__(self, worker):
super().__init__()
h, w, center = 150, 550, QtWidgets.QDesktopWidget().availableGeometry().center()
self.layout = QtWidgets.QVBoxLayout(self)
self.setFixedSize(w, h)
self.setModal(True)
self.bar = QtWidgets.QProgressBar(self)
self.bar.setAlignment(QtCore.Qt.AlignCenter)
self.label = QtWidgets.QLabel('Пожалуйста дождитесь окончания выполнения программы...', self)
self.label.setAlignment(QtCore.Qt.AlignTop)
self.btn_ok, self.btn_cancel = QtWidgets.QPushButton('Продолжить', self), QtWidgets.QPushButton('Отмена', self)
self.btn_ok.setEnabled(False)
self.btn_ok.clicked.connect(self.hide)
self.btn_cancel.clicked.connect(self.abort.emit)
btnsWidget, btnsLayout = QtWidgets.QWidget(), QtWidgets.QHBoxLayout()
btnsLayout.setContentsMargins(200, 10, 0, 0)
btnsLayout.addWidget(self.btn_ok), btnsLayout.addWidget(self.btn_cancel)
btnsWidget.setLayout(btnsLayout)
self.layout.addWidget(self.bar)
self.layout.addWidget(self.label)
self.layout.addWidget(btnsWidget)
self.setGeometry(center.x()-(w+1)//2, center.y()-h//2, w, h)
self.setWindowTitle('Идёт обработка')
# self.show()
# connect signals with the worker
worker.progress.connect(self.on_progress_changed)
worker.aborted.connect(self.hide)
worker.finished.connect(self.finish)
self.abort.connect(worker.abort)
def finish(self, time_str):
self.btn_cancel.setEnabled(False)
self.btn_ok.setEnabled(True)
self.label.setText('Готово! Работа программы завершена за '+time_str+'.')
def on_progress_changed(self, value):
print(value)
self.bar.setValue(value)