0 / 0 / 0
Регистрация: 02.04.2020
Сообщений: 16
1
PyQt5

Заставка, ProgressBar

06.12.2020, 18:04. Показов 497. Ответов 1
Метки нет (Все метки)

Всем привет! Нужна помощь. У меня есть два окна. Одно окно я хочу сделать заставкой. Как мне сделать, что бы при запуске программы у меня запускалось окно заставки с прогресс баром, и после того как бар дойдет до 100% открывалось основное окно.

Python
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
from PyQt5 import QtWidgets, QtCore
import ui_glavnoe, ui_zastavka
 
class MyWindow(QtWidgets.QWidget):
    def __init__(self):
        QtWidgets.QWidget.__init__(self)
        self.ui = ui_glavnoe.Ui_Form()
        self.ui.setupUi(self)
 
 
class Zastavka(QtWidgets.QWidget):
    def __init__(self):
        QtWidgets.QWidget.__init__(self)
        self.ui = ui_zastavka.Ui_Zastavka()
        self.ui.setupUi(self)
 
 
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()
    zas = Zastavka()
    zas.setWindowFlag(QtCore.Qt.SplashScreen)
    zas.show()
    sys.exit(app.exec_())
Python
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
from PyQt5 import QtCore, QtGui, QtWidgets
 
 
class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        font = QtGui.QFont()
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        font.setKerning(True)
        Form.setFont(font)
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(100, 40, 241, 161))
        font = QtGui.QFont()
        font.setPointSize(36)
        font.setBold(False)
        font.setItalic(False)
        font.setWeight(50)
        font.setKerning(True)
        self.label.setFont(font)
        self.label.setObjectName("label")
 
        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)
 
    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.label.setText(_translate("Form", "Привет "))
Python
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
from PyQt5 import QtCore, QtGui, QtWidgets
 
 
class Ui_Zastavka(object):
    def setupUi(self, Zastavka):
        Zastavka.setObjectName("Zastavka")
        Zastavka.resize(599, 464)
        self.label = QtWidgets.QLabel(Zastavka)
        self.label.setGeometry(QtCore.QRect(-10, 0, 641, 471))
        self.label.setText("")
        self.label.setPixmap(QtGui.QPixmap(":/image/31.png"))
        self.label.setScaledContents(True)
        self.label.setObjectName("label")
        self.progressBar = QtWidgets.QProgressBar(Zastavka)
        self.progressBar.setGeometry(QtCore.QRect(0, 430, 591, 31))
        self.progressBar.setStyleSheet("color: rgb(255, 255, 255);")
        self.progressBar.setProperty("value", 0)
        self.progressBar.setTextDirection(QtWidgets.QProgressBar.TopToBottom)
        self.progressBar.setObjectName("progressBar")
 
        self.retranslateUi(Zastavka)
        QtCore.QMetaObject.connectSlotsByName(Zastavka)
 
    def retranslateUi(self, Zastavka):
        _translate = QtCore.QCoreApplication.translate
        Zastavka.setWindowTitle(_translate("Zastavka", "Form"))
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2020, 18:04
Ответы с готовыми решениями:

При включении висит заставка от PCI Express карты или заставка UEFI
Здравствуйте. Такая проблема, которая оказалась мне не под силу. Мат.плата biostar H81MG c UEFI...

Консольный progressbar или progressbar в TMemo
Здравствуйте. Хочу спросить ради интереса как создать вот такой ProgressBar но с указанием...

Заставка
Здравствуйте Подскажите плиз как на С# сделать так, чтобы когда я запускал программу то выходила...

Заставка
При запуске компа появляется вот такое окно,очень хочется от него избавиться,но я не знаю...

1
121 / 74 / 25
Регистрация: 18.09.2019
Сообщений: 152
Записей в блоге: 16
07.12.2020, 20:56 2
Честно скажу, что разбираться с тем, что нагенерял вам дизайнер - это надо иметь такой склад ума...
А сделанная ручками учебная имитационная демонстрашка у меня есть. Не образец, конечно, давно это было, но разобраться с принципами можно.

Python
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""The Alarm Probe v0.002
Проверка оповещений
"""
import sys
from PyQt5.QtCore import QLibraryInfo, QLocale, QTimer, QTranslator
from PyQt5.QtWidgets import QAction, QApplication, QDesktopWidget
from PyQt5.QtWidgets import QMainWindow, QMessageBox, QProgressDialog
from PyQt5.QtWidgets import QStyleFactory
 
class probeMainWindow(QMainWindow):
    """Главное окно приложения
    """
    MAX_PCHECK = 100      # количество предстартовых проверок
    LOCALE_PCHECK = 30    # номер шага проверки языковых установок
    PLATFORM_PCHECK = 60  # номер шага проверки используемой платформы
 
    def __init__(self, parent=None):
        super(probeMainWindow, self).__init__(parent)
        self.i_pcheck = None        # счётчик проверок
        self.pseudoChecker = None   # таймер для имитатора
        self.initUI()
 
    def initUI(self):
        """Строим минимально необходимый графический интерфейс
        """
        screen = QDesktopWidget().availableGeometry()
        self.setGeometry(
            int(screen.width()/4), int(screen.height()/4),
            int(screen.width()/2), int(screen.height()/2))
 
        self.setWindowTitle("The Alarm Probe v0.002")
        self.statusBar()
 
        exitAction = QAction(
            "Завершить работу", self, shortcut="Ctrl+Q",
            statusTip="Завершение работы",
            triggered=self.to_close, enabled=True)
        taskMenu = self.menuBar().addMenu("Задачи")
        taskMenu.addAction(exitAction)
 
        # Для демонстрации процесса инициализации вывешиваем QProgressDialog
        self.pcheck = QProgressDialog(
            "Инициализация приложения...",
            "Отменить", 0, self.MAX_PCHECK)
        self.pcheck.setAutoClose(True)
        self.pcheck.setMinimumDuration(0)
        self.pcheck.setWindowTitle("The Alarm Probe v0.002")
        self.pcheck.setGeometry(
            int(screen.width()/8), int(screen.height()/8),
            int(screen.width()*3/4), int(screen.height()/8))
        self.pcheck.canceled.connect(self.to_break)
 
        # Минимально необходимый графический интерфейс построен и
        # можно запускать проверки, требующие реакции пользователя.
        # Но сначала следует корректно завершить инициализацию окна,
        # вернув управление обработчику событий.
        # Поэтому проверки запустит асинхронный таймер через 0.1 сек
        # после завершения инициализации главного окна
        QTimer.singleShot(100, self.to_pcheck)
 
    def to_pcheck(self):
        """Выполняем оставшуюся часть предстартовых проверок
        (например, проверяем и накатываем сохранённую конфигурацию,
        разрешаем конфликты в случае необходимости и т.д.)
        """
        self.i_pcheck = 0
        self.pcheck.setValue(self.i_pcheck)
        self.pcheck.show()
 
        # Имитируем процесс проверки разных условий с помощью таймера
        self.pseudoChecker = QTimer(self)
        self.pseudoChecker.timeout.connect(self.to_pseudo)
        self.pseudoChecker.start(100)
 
    def to_pseudo(self):
        """Имитатор процесса проверки
        """
        self.i_pcheck = self.i_pcheck + 1
        self.pcheck.setValue(self.i_pcheck)
 
        # 1.проверяем системные языковые установки
        if self.i_pcheck == self.LOCALE_PCHECK:
            self.pseudoChecker.stop()
            self.pcheck.setLabelText(
                "Проверка системных языковых установок...")
            if QLocale().name() == "ru_RU":
                reply = QMessageBox.warning(
                    self, "П Р Е Д У П Р Е Ж Д Е Н И Е !!!",
                    ("В некоторых системах требуется установка"
                     " дополнительных языковых модулей.<br><br>"
                     "Установить?"),
                    buttons=QMessageBox.Yes|QMessageBox.No)
                if reply == QMessageBox.Yes:
                    qtrn = QTranslator(self)
                    qtrn.load(
                        "qtbase_ru",
                        QLibraryInfo.location(QLibraryInfo.TranslationsPath))
                    import __main__
                    __main__.app.installTranslator(qtrn)
                self.pseudoChecker.start(100)
 
            else:
                reply = QMessageBox.warning(
                    self, "W A R N I N G !!!",
                    ("The application <b>The Alarm Probe</b>"
                     " uses Russian by default.<br><br>"
                     "Continue anyway?"),
                    buttons=QMessageBox.Yes|QMessageBox.Close)
                if reply == QMessageBox.Yes:
                    self.pseudoChecker.start(100)
                else:
                    self.to_break()
 
        # 2.проверяем системную платформу на совместимость
        # (платформы DreamOS и NightmareOS выдуманы)
        elif self.i_pcheck == self.PLATFORM_PCHECK:
            self.pseudoChecker.stop()
            self.pcheck.setLabelText("Проверка системной платформы...")
            if sys.platform.upper() not in ["DREAMOS", "NIGHTMAREOS"]:
                reply = QMessageBox.warning(
                    self, "П Р Е Д У П Р Е Ж Д Е Н И Е !!!",
                    ("Работоспособность приложения"
                     " <b>Проверка оповещений</b> на платформе <b>{!s}</b>"
                     " не гарантируется!!!<br><br>"
                     "Всё равно продолжить работу?").format(sys.platform),
                    buttons=QMessageBox.Yes|QMessageBox.Close)
                if reply == QMessageBox.Yes:
                    self.pseudoChecker.start(100)
                else:
                    self.to_break()
            else:
                self.pseudoChecker.start(100)
 
        # 3.все проверки выполнены
        elif self.i_pcheck >= self.MAX_PCHECK:
            self.pseudoChecker.stop()
            self.pcheck.canceled.disconnect(self.to_break)
            self.pcheck.close()
            self.to_redraw()
 
        # 4.восстанавливаем текст имитации проверок
        else:
            self.pcheck.setLabelText("Имитация инициализации...")
 
    def to_redraw(self):
        """Достраиваем графический интерфейс в соответствии с конфигурацией
        """
        self.show()
 
    def to_break(self):
        """Пользователь прервал инициализацию и решил закрыть приложение
        """
        self.pseudoChecker.stop()
        self.pcheck.canceled.disconnect(self.to_break)
        self.pcheck.close()
        self.to_close()
 
    def to_close(self):
        """На выход
        """
        self.close()
 
 
if __name__ == "__main__":
    app = QApplication(sys.argv)
 
    # популярный стиль с хорошо различимым индикатором ProgressBar
    if "Windows" in QStyleFactory.keys():
        app.setStyle(QStyleFactory.create("Windows"))
 
    # проверяем критические условия, препятствующие запуску приложения,
    # доступность жизненно важных ресурсов и прочее
    # (например, наличие обязательных модулей в системе)
    if "-nodream" not in sys.argv:
        try:
            import PyQt5.QtDreamAndNightmareWidgets
        except:
            mbox = QMessageBox()
            mbox.setWindowTitle("О Ш И Б К А !!!")
            mbox.setIcon(QMessageBox.Critical)
            mbox.setText(
                "Запуск приложения <b>Проверка оповещений</b> невозможен:")
            mbox.setInformativeText(
                "Модуль <b>PyQt5.QtDreamAndNightmareWidgets</b>"
                " отсутствует.<br>"
                "Установите пакет, содержащий модуль, или попробуйте"
                " запустить приложение с ключом <b>-nodream</b>.")
            mbox.addButton(QMessageBox.Close)
            mbox.show()
            sys.exit(app.exec_())
 
    # препятствий нет, запускаем приложение
    mwin = probeMainWindow()
    sys.exit(app.exec_())
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2020, 20:56

заставка
заставка облачные часы. сначала показовала нормально,а теперь токлько секунды. как исправить...

Заставка в С++
Помогите создать цветную заставку, на тему Бегущий человечек, скорость которого периодически...

Заставка
Включаю комп и когда появляется эмблемма винды, проходит 55-60 секунд до появления колеса загрузки....

Заставка
Собираю типа заставки, нужен такой код: //более минуты мышь недвижется и клавиатура в простое {...

заставка на С#
как вставить рисунок, при этом он должен задержатся на 20 сек? т.е как только скомпелировал...

заставка
Здравствуйте, как делается заставка при запуске приложения? А точнее - как ее сменить, она есть....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.