Создавайте собственные пользовательские интерфейсы с помощью PyQt и Qt Designer.

PyQt - это набор привязок Python, который позволяет разработчикам создавать настраиваемые графические пользовательские интерфейсы (GUI) на Python. PyQt построен на основе библиотеки C ++ Qt, которая используется для разработки графических интерфейсов пользователя для различных многоплатформенных приложений.

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

1. Установите PyQt

Первый шаг - установить PyQt, если он еще не установлен. В MacOS PyQt можно установить с помощью homebrew или pip.

Установка Homebrew:

> brew install pyqt5

При установке с помощью homebrew дизайнер pyqt5 должен быть установлен автоматически.

Установка пакета:

> pip install pyqt5
# Install the developer tools
> pip install pyqt5-tools

2. Создайте пользовательский интерфейс в Qt Designer

Следующим шагом будет открытие Qt Designer. В Mac OS дизайнер Qt можно открыть, выполнив в терминале следующее:

> open -a Designer

Создайте виджет Qt

Файл - ›Новый -› Виджет

Отсюда виджеты можно перетаскивать из окна виджетов в форму, и свойства каждого виджета могут быть обновлены по желанию. Чтобы просмотреть доступные виджеты, перейдите на View -> Widget Box. Пример demo.ui ниже содержит виджеты типа QHboxLayout, QPushButton, QLabel, QSpinBox, QLineEdit и т. Д.

Не забудьте сохранить файл .ui после завершения макета.

3. Инициализируйте виджет Qt в python.

Класс QWidget необходимо создать в Python, чтобы загрузить и инициализировать виджет Qt, созданный в Qt Designer. Ниже приведен минимальный код, необходимый для запуска основного виджета.

4. Подключите компоненты пользовательского интерфейса к коду.

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

Каждый компонент, к которому будет осуществляться доступ из кода Python, должен иметь имя идентификатора. В Qt Designer откройте редактор свойств, перейдя в View -> Property Editor. Выберите каждый компонент виджета и обновите имя, изменив поле objectName. Это имя будет использоваться в коде Python для ссылки на соответствующий виджет.

В приведенном выше примере QLabel было присвоено имя mainLabel. Теперь текст метки можно обновить в коде, вызвав следующее:

self.mainLabel.setText("Updated Text")

5. Подключите действия пользовательского интерфейса к коду.

Когда пользователь взаимодействует с компонентом виджета, приложению, скорее всего, потребуется отреагировать. Сигналы и слоты - это ядро ​​механизма обратного вызова Qt. Сигналы пользовательского интерфейса испускаются, когда происходит событие. Слот, который выражается как указанная функция, будет вызываться в ответ на конкретный сигнал. Есть два способа связать действие пользовательского интерфейса с пользовательской функцией.

Вариант 1. Подключите функцию к сигналу.

Функция self.click будет вызываться при нажатии кнопки QPushButton applyButton.

self.applyButton.clicked.connect(self.click)

Вариант 2. Укажите слот с помощью декоратора pyqtSlot.

Обратный вызов другого стиля - указать слот для данного сигнала с помощью декоратора pyqtSlot.

@pyqtSlot(name="on_applyButton_clicked")
def click(self):
    print("CLICKING")

Полный пример:

Заключение

В этом посте были приведены пошаговые инструкции по созданию вашего первого виджета с использованием PyQt и Qt Designer.

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

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