Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео. И, конечно, не забывайте о лайках.
Простейшие оконные приложения на Python
Начинаю большую тему, посвящённую оконным приложениям. Их ещё называю GUI (graphical user interface). В основе наших приложений положим библиотеку PyQT5. Удобная мощная библиотека, в чём вы непременно убедитесь, если будете читать мои статьи из данной подборки. Для того, чтобы успешно её использовать не забывайте ООП
Если у вас нет на компьютере библиотеки PyQT5, придётся её установить. Это делается обычным для Python способом.
Основная идея оконных приложений это обработка событий. Как правило эти события от клавиатуры и мыши. От клавиатуры это нажатие клавиш. От мыши это движение курсора, щелчки правой и левой кнопками, двойные щелчки. В приложениях ниже обрабатывается щелчок мыши по кнопке в правом верхнем углу окна с крестиком. По умолчанию это событие обрабатывается как сигнал закрытия окна и приложения, если это окно главное (как у нас в приложениях ниже). Но закрыть окно можно и с помощью Alt+F4. Кроме того по умолчанию можно менять размеры окна и его положение с помощью опять же мыши.
Создать простейшее оконное приложение не сложно. Для этого нужно импортировать из PyQt5.QtWidgets два класса QApplication и QWidget. Первый класс нужен для создания всего приложения. Второй даёт примитив для создания окна. Программа, создающая простейшее окно, показана ниже
#!/usr/bin/python3
import sys
from PyQt5.QtWidgets import QApplication, QWidget
# Создадим класс приложения PyQT
app = QApplication(sys.argv)
# создадим объект - окно
w = QWidget()
# параметры окна
w.resize(450, 350)
w.move(300, 300)
w.setWindowTitle('Окно простейшее')
# показать окно
w.show()
# ожидание событий (сигналов)
sys.exit(app.exec())
Сделаем ряд пояснений к программе
- Окно создаётся на основе класса QWidget обычным способом. После успешного создания можно, используя методы объекта, устанавливать разные параметры окна (см. программу).
- Чтобы окно появилось на экране, используем метод show().
- Для того, чтобы программа не заканчивала свою работу сразу, после появления окна, используется объект класса QApplication. Этот объект ждёт событий и передаёт их обработчикам окна. Если мы щёлкаем по крестику в правом верхнем углу окна, то объект QApplication возвращает управление и программа заканчивает свою работу. Функция sys.exit() не обязательна (можно просто написать app.exit()), но она позволяет возвратить код возврата во внешнюю среду.
Результат выполнения программы - окно (см. Рисунок 1)
Рассмотрим теперь другой подход в создании оконных приложений. В этом случае создается дочерний класс от QWidget и, соответственно, окно создаётся через создание объекта этого дочернего класса. Программа представлена ниже.
Поясним программу
При создании объекта Окно выполняется конструктор __init__(). Соответственно именно тут мы и можем настроить все параметры окна. Функция initUI(), конечно, не обязательна, так как всё можно сделать в __init__(). Это просто удобно поместить все настройки интерфейса в один метод. Вызов super().__init__() в конструкторе обязателен. См. статью.
Результат выполнения программы см. Рисунок 2
Справочник по основным модулям библиотеки PyQt5
Модули для оконных приложений
- QWidgets — содержит основные виджеты (визуальные элементы) PyQt5.
- QtCore — содержит неграфические классы PyQt5.
- QtGui — содержит различные элементы для визульного представления информации (рисование, шрифты и т.п.).
- QtCore.Qt — в частности содержит большое количество констант.
Другие модули PyQt5
- QtMultimedia — модуль для обработки мультимедиа.
- QtOpenGL — классы поддержки OpenGl.
- QtNetwork — классы для сетевого программировнаия.
- QtSql — классы поддержки реляционных баз данных.
- QtSvg — классы для обработки svg-файлов.
- QtXml — классы поддержки xml-формата.
Пока наше рассмотрение будет сосредоточено на оконных возможностях PyQt5.
Ну, пока всё!
Пишите свои предложения и замечания и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.