Как сделать свой виджет pyqt5

Обновлено: 04.07.2024

Python — это высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода, как говорит нам Википедия. А также активно используется для написания Web-приложений. Ну а для работы с Qt для Python была разработана компанией Riverbank Computing библиотека PyQt5, которая является набором "привязок" к библиотеке Qt5.

Из интереса, я решил написать небольшой Hello World с использованием PyQt5.

Установка

Первым делом устанавливаем Python, в моём случае это Python 3.5.2.

Для Windows можно скачать установочный пакет с официального сайта Python . Для Linux можем воспользоваться стандартным менеджером пакетов.

Далее необходимо установить PyQt5. В случае Linux можно либо установить с помощью стандартного менеджера пакетов. Например, для deb-based дистрибутивов:

Либо установить сначала утилиту pip для установки пакетов Python:

И уже произвести установку с помощью данной утилиты, что будет аналогично как для Windows, так и для Linux систем:

Для разработки на Python была выбрана IDE PyCharm.

  1. 1. Установка
  2. 2. Hello World
    1. 1. Полный текст программы
    2. 2. Отличия
      1. 1. if __name__ == "__main__":
      2. 2. Синтаксис сигналов и слотов
      3. 3. Python

      Hello World

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

      Полный текст программы

      Отличия

      if __name__ == "__main__":

      В приложениях на Python часто можно встретить следующую конструкцию:

      С помощью данной конструкции можно указать Python-скрипту, какой программный код исполнять в том случае, если он запускается как самостоятельное приложение. В случае же, если данный скрипт будет импортирован в другой скрипт, то программный код, который будет следовать за данной конструкцией, не будет вызван.

      Синтаксис сигналов и слотов

      В PyQt5 используется следующий синтаксис сигналов и слотов, который показан на примере использования QAction.

      Тогда как в Qt C++ тоже самое выглядело бы следующим образом:

      Python

      Пожалуй, самое очевидное ;-)
      Здесь без комментариев.

      Заключение

      В результате получим программу следующего вида.


      Рекомендуем хостинг TIMEWEB

      Рекомендуем хостинг TIMEWEB

      Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.


      Основы

      Введение в тему

      В данном уроке по PyQt5 мы изучим, как использовать Пайтон и Qt для создания графического интерфейса пользователя в самых распространённых операционных системах.

      Что такое pyqt5

      PyQt – это модуль, предназначенный для создания графических интерфейсов в Python через библиотеку Qt. Эта библиотека написана на языке C++ и является одним из самых популярных инструментов разработки GUI, а также имеет обширное сообщество. Существует и альтернатива: модуль PySide. Различаются они тем, что PyQt нельзя свободно использовать в коммерческих проектах, однако, этот модуль, всё же, более зрелый. Существуют и другие распространённые средства создания графических интерфейсов:

      Установка pyqt

      Устанавливать модуль будем в виртуальную среду. Для этого вводим в консоли:

      Эта команда создаст папку venv/. Чтобы запустить виртуальную среду в ОС Windows, выполните следующую команду:

      Для остальных ОС это делается так:

      Если всё получилось, в начале строки в терминале появится префикс (venv).

      Теперь, для установки PyQt с помощью pip, выполните следующую команду:

      Создание gui графического интерфейса пользователя

      Теперь можно приступить к созданию интерфейса. Сперва модуль надо импортировать:

      Теперь необходимо создать объект приложения QApplication при помощи следующей команды:

      В объект приложения необходимо передавать список аргументов. В данном случае он пустой [], но, общепринятая практика писать следующим образом:

      sys.argv – аргументы командной строки и теперь Вы можете запустить свой скрипт из консоли, передав при этом какие-то аргументы.

      Дальше нужно создать виджет (о них мы поговорим чуть позже):

      На данный момент наш маленький интерфейс готов, но, чтобы его увидел пользователь, надо использовать метод show:

      Внешний вид будет зависеть от Вашей операционной среды.

      Осталось запустить приложение:

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

      Метод sys.exit() обеспечивает чистый выход. Вы сможете узнать, как завершилось приложение.

      Виджеты

      Виджеты – это все видимые части интерфейса. Они могут быть вложены друг в друга.

      На этом изображении представлены самые часто встречающиеся виджеты:

      PyQt

      Они перечислены ниже в порядке сверху вниз и слева направо:

      • QLabel — обеспечивает отображение текста или изображения
      • QComboBox — представляет собой комбинированную кнопку и всплывающий список
      • QCheckBox — предоставляет флажок с текстовой меткой
      • QRadioButton — предоставляет переключатель с текстовой меткой
      • QPushButton — предоставляет командную кнопку
      • QTableWidget — предоставляют стандартные средства отображения таблиц для приложений
      • QLineEdit – изменяемая строка
      • QSlider — вертикальный или горизонтальный ползунок
      • QProgressBar — предоставляет горизонтальную или вертикальную полосу выполнения

      Есть ещё несколько важных методов виджетов, о которых нельзя не рассказать:

      resize() — изменяет размеры виджета.

      move() — двигает виджет на экране.

      setWindowTitle() – устанавливает название окна.

      Этот код создаёт пустое окно размером 750*650 пикселей, расположенное в верхнем левом углу. Название окна — ‘My Window’.

      Есть ещё очень важный инструмент для создания интерфейсов — Qt Designer. Это программа, которая делает проще процесс создания графического интерфейса программы, конечно внешний вид можно сделать и без помощи данной программы, но не для всех это будет удобно. На данный момент разработчики прекратили поддержку этого инструмента.

      Макеты

      Чаще всего приложение состоит из целого набора виджетов. Если так, то нужно объяснить Qt, как их разместить внутри окна. Например, вы можете использовать QHBoxLayout для горизонтального расположения виджетов:

      Листинг кода, создающего окно, представленное на изображении выше:

      Что здесь происходит? Сперва мы импортируем необходимые модули, затем создаём объект приложения. Создаём виджет типа QWidget. Это базовый тип, не имеющий поведения. Дальше инициируем макет (mylayout), а в нём две кнопки QPushButton. Строка mywindow.setLayout(mylayout) говорит QT что для виджета mywindow будет использоваться именно этот макет. Делаем всё это видимым и запускаем.

      Qt включает набор классов управления компоновкой, которые используются для описания компоновки виджетов в пользовательском интерфейсе приложения. Эти макеты автоматически позиционируют и изменяют размер виджетов, когда объем доступного для них места изменяется, гарантируя, что они единообразно расположены и пользовательский интерфейс в целом остается пригодным для использования. Вот список макетов:

      QHBoxLayout – располагает виджеты горизонтально.

      QVBoxLayout — располагает виджеты вертикально.

      QGridLayout – сеточный макет. Этот макет делит пространство на строки и столбцы.

      QFormLayout — размещает свои дочерние элементы в виде двух столбцов.

      Если Вы знакомы с языком CSS, то, конечно же, заметили что QHBoxLayout и QVBoxLayout похожи на flexbox, а QGridLayout – на grid.

      Сразу предупредим: для работы с этой библиотекой (как, впрочем, и с любой другой) лучше подтянуть английский. Если вы всё время откладывали этот нелёгкий процесс, то изучение Python станет триггером снова возобновить совершенствование языка. Не секрет, что лучшие результаты показывают уроки с учителем английского носителя языка (для которого он родной). Пожалуй, обучение именно в таком формате даёт максимальную эффективность по понимаю речи и чтению без словаря. Для будущего программиста это очень важно, особенно когда замаячит релокейт.

      Что такое PyQt

      Как же создается интерфейс для приложения в PyQt? Сделать это можно как программно, через код, так и в дизайнере — специальном GUI-конструкторе. Продвинутые разработчики рекомендуют использовать именно программный способ — в этом случае вы получаете полный контроль над интерфейсом и понимаете суть работы с ним.


      Пишем интерфейс

      [adace-ad >Установить PyQt можно через консоль — командой pip install pyqt5 , либо вбив PyQt5 в настройках интерпретатора.

      Разработка проекта строится на создании множества объектов (виджетов). За урок мы детальнее вникнем в разработку дизайна на основе программы Qt Designer и создадим небольшое приложение со множеством виджетов.

      Видеоурок

      Создание дизайна базируется на добавлении объектов (виджетов) как через код, так и через программу Qt Designer. При работе с Qt Designer вы имеете быстрый доступ ко множеству объектов, что можно добавить в формате перетаскивания drag & drop.

      Читайте также: