1K подписчиков

Программирование на языке Python. Библиотека PyQT5 и простейшее оконное приложение (QWidget)

123 прочитали

Доброго времени суток, читатели, зрители моего канала 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)

Рисунок 1. Результат выполнения программы (см. выше)
Рисунок 1. Результат выполнения программы (см. выше)

Рассмотрим теперь другой подход в создании оконных приложений. В этом случае создается дочерний класс от QWidget и, соответственно, окно создаётся через создание объекта этого дочернего класса. Программа представлена ниже.

Весь текст программы см. ниже по ссылке
Весь текст программы см. ниже по ссылке

Поясним программу

При создании объекта Окно выполняется конструктор __init__(). Соответственно именно тут мы и можем настроить все параметры окна. Функция initUI(), конечно, не обязательна, так как всё можно сделать в __init__(). Это просто удобно поместить все настройки интерфейса в один метод. Вызов super().__init__() в конструкторе обязателен. См. статью.

Результат выполнения программы см. Рисунок 2

Рисунок 2. Результат выполнения программы выше
Рисунок 2. Результат выполнения программы выше

Справочник по основным модулям библиотеки PyQt5

Модули для оконных приложений

  • QWidgets — содержит основные виджеты (визуальные элементы) PyQt5.
  • QtCore — содержит неграфические классы PyQt5.
  • QtGui — содержит различные элементы для визульного представления информации (рисование, шрифты и т.п.).
  • QtCore.Qt — в частности содержит большое количество констант.

Другие модули PyQt5

  • QtMultimedia — модуль для обработки мультимедиа.
  • QtOpenGL — классы поддержки OpenGl.
  • QtNetwork — классы для сетевого программировнаия.
  • QtSql — классы поддержки реляционных баз данных.
  • QtSvg — классы для обработки svg-файлов.
  • QtXml — классы поддержки xml-формата.

Пока наше рассмотрение будет сосредоточено на оконных возможностях PyQt5.

Ну, пока всё!

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

Больше окон хороших и разных
Больше окон хороших и разных