Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Библиотека PyQt5 и графика модуля QtGui
Наконец добрались до графики PyQt5. У нас есть раздел по программированию графики. Но там используется библиотека pillow, с помощью которой можно создавать графические файлы. Сейчас поговорим о рисовании непосредственно в окне, так сказать, вживую.
Для рисования нам понадобится модуль QtGui. О нём много чего можно рассказать, но сегодня только один пример рисования, использующий данный модуль.
Ниже представлена программа, демонстрирующая некоторые возможности рисования с помощью PyQt5.QtGui. Окна программы показаны на рисунках 1 - 6. Рисунок 1 - начальное окно программы. Далее нажатие кнопки Рисовать приводит к появлению тех или иных графических элементов. И так по кругу (от Рисунка 6 к рисунка 2 и т.д.). Нам многое уже здесь знакомо. И создание окна (QWidget) и работа кнопки QPushButton.
На что главное следует обратить внимание. Это на событие paintEvent(). Этот метод вызывается при перерисовке окна. Это в частности происходит, когда мы меняем размер окна. Но можно вызвать этот метод программно. Для этого вызывается QWidget.repaint(). Что и используется в нашей программе. Для того, чтобы использовать метод paintEvent() в нём создаётся объект класса QtGui.QPainter. Далее полученный объект позволяет использовать методы QPainter.begin() и QPainter.end(). Между этими методами (если begin() возвратил True) как раз и можно осуществлять рисование в окне.
Продолжим рассматривать некоторые детали представленной программы. В классе Example создаётся список self.fn. Он содержит ссылки на методы класса, которые создают то или иное графическое изображение. Запуск таких функций см. в методе paintEvent(). Переменная self.cnf содержит номер функции, которая будет запускаться.
Метод paint() запускается нажатием кнопки. При этом увеличивается индекс функции, при достижении предельного значения он обнуляется. Ну, а далее запускается self.repaint(), который инициализирует событие paintEvent(). Ниже расположены методы рисования разных фигур (они прокомментированы). Важно обратить внимание на следующие две вещи:
- Метод setPen() устанавливает параметры пера (pen). Перо определяет цвет и параметры линии рисования: линии, геометрические фигуры, шрифт, точка.
- Дополнительные параметры шрифта определяются методом setFont(). Название шрифта и его размер.
- Метод setBrush() определяет параметры кисти для закраски областей. В нашем случае прямоугольников.
Есть также набор для рисования примитивов. В нашей программе это
- drawRect() — рисование закрашенных прямоугольников;
- drawText() — рисование текста в окне. Обращаю внимание на метод QWidget.rect(), который определяет рабочую область окна;
- drawLine() — рисование линии, согласно определённого ранее пера.
- drawEllipse() — рисование эллипса, вписанного в указанный прямоугольник. В случае квадрата получаем окружность.
Мы не заканчиваем тему графики в библиотеке PyQt5. Будут ещё статьи.
Ну, пока всё!
Пишите свои предложения и замечания, и занимайтесь программированием, а также проектированием баз данных, хотя бы для поддержания уровня интеллекта.