Начало
В больших приложениях загрузка начальных данных может занимать продолжительное время, в течение которого принято выводить окно-заставку, в котором отображается процесс загрузки, По окончании, заставка скрывается и отображается главное окно.Для вывода заставки в PyQt5 предназначен класс QSplashScreen(Из модуля QtWidgets), который позволяет нам сделать заставку, он имеет вот такой формат:
<Объект> = QSplashScreen([<Изображение>][, flags=<Тип окна>[)
<Объект> = QSplashScreen(<Родитель>[, <Изображение>] [, flags=<Тип окна>])
Параметр <Родитель> позволяет указать ссылку на родительский компонент. В параметре <Изображение> указывается ссылка на изображение, которое будет отображаться на заставке. Конструктору класса QPixmap можно передать путь к фалу с изображением. Параметр flags предназначен для указание типа окна.
Класс QSplashScreen поддерживает вот такие методы:
- show() - отображает заставку;
- finish() - закрывает заставку;
- showMessage() - выводит сообшение в заставке;
- clearMessage() - удаляет надпись;
- setPixmap - Изменяет изображение;
- pixmap() - возвращает изображение виде экземпляра.
Пишем код
Создадим простой код, который выводит заставку:
Python:
from PyQt5 import QtCore, QtGui, QtWidgets # Импортируем необходимые модули;
import time
import sys
class MyWindow(QtWidgets.QPushButton): # Создаем класс и простую кнопку;
def __init__(self):
QtWidgets.QPushButton.__init__(self)
self.setText('close...') # Текст кнопки;
self.clicked.connect(QtWidgets.qApp.quit) # Даём события кнопки, в нашем случае - просто выход;
def load_data(self, sp):
for i in range(1, 11): # Имитируем процесс;
time.sleep(2) # Что-то загружаем;
sp.showMessage('Загрузка данных...{0}%'.format(i*10),
QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom, QtCore.Qt.black)
QtWidgets.qApp.processEvents() # Запускаем оборт цикла;
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
splash = QtWidgets.QSplashScreen(QtGui.QPixmap('img.jpg')) # Загружаем изображение;
splash.showMessage('Загрузка данных...{0}%',
QtCore.Qt.AlignHCenter | QtCore.Qt.AlignBottom, QtCore.Qt.black)
splash.show() # Отображаем заставку;
QtWidgets.qApp.processEvents() # Оборот цикла;
window = MyWindow() # Создаём экземпляр;
window.setWindowTitle('Заставка')
window.resize(300, 30)
window.load_data(splash) # Загружаем данные;
window.show()
splash.finish(window)
sys.exit(app.exec_())
Если запустить код, то вы увидите вот такой результат:
Тоесть мы создали код который выводит заставку с изображение, и в этой заставке с помощью showMessage() сделал простой текст, дальше с помощью AlignBottom указываем местоположение и даем ему цвет black, когда он дойдет до 100% или просто завершится, то метод finish вскроет его, и отобразится окно с кнопкой для выхода.
Итоги
Мы смогли создать простую окно-заставку с изображением. Надеюсь данная статья, была полезна для вас.
[Буду рад если найдете ошибки в текст или в коде!]
[Буду рад если найдете ошибки в текст или в коде!]