Сегодня мы с Вами рассмотрим прекрасную библиотеку PySide6, которая является оберткой для взаимодействия с Qt при помощи языка Python, которые позволяет вам использовать Python для написания desktop-приложений Qt. Конечно стоит учитывать, что Python не является лучшим решением для реализации Desktop приложений. В данном гайде Вам уже будут необходимы минимальные знания Python и ООП.

Логотип Python for Qt

Для реализации кода нам понадобится:

  • Любая удобная для Вас среда разработки или IDE (я использую PyCharm);

  • Python версии 3.7+ (Моя текущая версия 3.11);

  • Документация Python for Qt

Создание и активация виртуального окружения

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

Для создания виртуального окружения, выполните в консоли следующую команду:

python -m venv venv

После активации виртуального окружения в Вашем проекте, выполните:

Если Вы используйте Windows:

.\venv\Scripts\activate.bat

Если Вы используйте Linux/MacOs:

source venv/bin/activate

Установка PySide6

Я буду устанавливать PySide6 с помощью менеджера пакетов pip встроенная в Python. Далее в своем терминале или консоли выполните следующую команду:

Если Вы используйте Windows:

pip install pyside6

Если Вы используйте Linux/MacOS:

pip3 install pyside6

После успешной установки можно приступить к написанию кода. Но для начала хочется Вам поведать о встроенных модулях PySide6

Проверка установки PySide6

Далее если Вы успешно установили PySide6, можем проверить текущую версию.

import PySide6
print(PySide6.__version__)
Вывод текущей версии PySide6

:Основные модули в PySide6

В состав PySide6 входит большое число модулей, объединенных в пакет PySide6. Далее рассмотрим одни из самых важных из них:

  1. PySide6.QtCore: Этот модуль предоставляет основные классы и функции для работы с событиями, временем, строками, списками и другими базовыми типами данных. Он также включает в себя классы для работы с потоками, файлами, сигналами и слотами (про сигналы и слоты Вы узнайте в последующих частях), что делает его одним из наиболее важных модулей в PySide6.

  2. PySide6.QtWidgets: Этот модуль предоставляет классы для создания пользовательского интерфейса, такие как окна, кнопки, текстовые поля, таблицы, меню и диалоговые окна. С его помощью вы можете создавать и управлять различными элементами интерфейса вашего приложения.

  3. PySide6.QtGui: Этот модуль содержит классы для работы с графическими элементами, такими как рисование, шрифты, курсоры, изображения и иконки. Он также предоставляет классы для работы с событиями ввода, такими как мышь и клавиатура.

  4. PySide6.QtNetwork: Этот модуль предоставляет классы для работы с сетью, такие как TCP и UDP сокеты, HTTP запросы и ответы, а также SSL подключения.

  5. PySide6.QtSql: Этот модуль предоставляет классы для работы с базами данных с использованием SQL. Он включает в себя поддержку различных баз данных, таких как SQLite, MySQL и PostgreSQL.

  6. PySide6.QtPrintSupport: Этот модуль предоставляет классы для печати документов и управления настройками печати.

Это лишь небольшой обзор наиболее важных модулей в PySide6. Каждый из этих модулей предоставляет обширный набор классов и функций для разработки различных типов приложений с графическим интерфейсом на Python.

Утилиты, поставляемые из "коробки" в PySide6

Когда Вы установили PySide6, то в ней из коробки доступны утилиты, которые помогают в разработке приложений с использованием PySide6. Вот они:

  1. pyside6-uic: Утилита для конвертации файлов .ui (созданных в Qt Designer) в соответствующий Python-код, который создает виджеты и окна с помощью PySide6.

  2. pyside6-rcc: Утилита для конвертации файлов .qrc (ресурсных файлов) в Python-модули, которые могут быть использованы для доступа к внедренным ресурсам, таким как изображения, шрифты и стили.

  3. pyside6-lupdate: Утилита для обновления файлов .ts (файлы переводов) в соответствии с исходным кодом приложения, содержащим строки, подлежащие переводу.

  4. pyside6-lrelease: Утилита для компиляции файлов .ts в файлы .qm (скомпилированные файлы переводов), которые затем могут быть загружены PySide6 приложениями для локализации.

  5. pyside6-сm: Утилита для конвертации файлов .qm (скомпилированные файлы переводов) в Python-модули, которые могут быть использованы для доступа к локализованным строкам.

  6. pyside6-designer - это графический редактор интерфейса, аналогичный Qt Designer, который поставляется вместе с PySide6. Эта утилита предоставляет удобный способ создания и редактирования пользовательских интерфейсов для ваших приложений.

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

Делаем наше первое приложение "Hello World"

Давайте перейдем к практике. Как принято у всех начинающих программистов, первым делаем реализуется программа с выводом текста "Hello World". Сейчас мы сделаем с Вами первый интерфейс.

from PySide6 import QtWidgets  # Импорт модуля QtWidgets из библиотеки PySide6
import sys  # Импорт модуля sys для работы с системными параметрами и выходом из программы

# Создание экземпляра QApplication, который управляет основным циклом событий и инициализацией приложения
app = QtWidgets.QApplication(sys.argv)

# Создание главного окна приложения
window = QtWidgets.QWidget()

# Установка заголовка главного окна
window.setWindowTitle("PySide6 Application")

# Установка размеров главного окна
window.resize(300, 250)

# Создание метки (надписи) с текстом "Hello World!"
lbl = QtWidgets.QLabel("Hello World!")

# Создание кнопки с надписью "Close"
btn = QtWidgets.QPushButton("Close")

# Создание вертикального блока для размещения метки и кнопки
# Вертикальный блок из себя представляет контейнер в который мы помещаем элементы
box = QtWidgets.QVBoxLayout()

# Добавление метки и кнопки в вертикальный блок
box.addWidget(lbl)
box.addWidget(btn)

# Установка вертикального блока в качестве компоновщика главного окна
window.setLayout(box)

# Подключение обработчика события "clicked" кнопки к методу app.quit, вызывающему завершение приложения
btn.clicked.connect(app.quit)

# Отображение главного окна
window.show()

# Запуск основного цикла обработки событий приложения
sys.exit(app.exec())  # После завершения цикла приложение выходит из программы

Если Вы запустите данный код, то получите окно Вашего приложения с текстом "Hello World" и кнопкой "Close"

Окно приложения

В следующей части гайда мы с Вами рассмотрим Виджеты и их компоновку, а также затронем тему сигналов и слотов и Qt Designer.