Разработка Desktop приложений на Python и библиотеки PySide6/PyQt6. Часть 1. Установка и первое приложение на PySide6
Сегодня мы с Вами рассмотрим прекрасную библиотеку PySide6, которая является оберткой для взаимодействия с Qt при помощи языка Python, которые позволяет вам использовать Python для написания desktop-приложений Qt. Конечно стоит учитывать, что Python не является лучшим решением для реализации Desktop приложений. В данном гайде Вам уже будут необходимы минимальные знания Python и ООП.
Для реализации кода нам понадобится:
Любая удобная для Вас среда разработки или IDE (я использую PyCharm);
Python версии 3.7+ (Моя текущая версия 3.11);
Создание и активация виртуального окружения
Виртуальное окружение в 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.QtCore: Этот модуль предоставляет основные классы и функции для работы с событиями, временем, строками, списками и другими базовыми типами данных. Он также включает в себя классы для работы с потоками, файлами, сигналами и слотами (про сигналы и слоты Вы узнайте в последующих частях), что делает его одним из наиболее важных модулей в PySide6.
PySide6.QtWidgets: Этот модуль предоставляет классы для создания пользовательского интерфейса, такие как окна, кнопки, текстовые поля, таблицы, меню и диалоговые окна. С его помощью вы можете создавать и управлять различными элементами интерфейса вашего приложения.
PySide6.QtGui: Этот модуль содержит классы для работы с графическими элементами, такими как рисование, шрифты, курсоры, изображения и иконки. Он также предоставляет классы для работы с событиями ввода, такими как мышь и клавиатура.
PySide6.QtNetwork: Этот модуль предоставляет классы для работы с сетью, такие как TCP и UDP сокеты, HTTP запросы и ответы, а также SSL подключения.
PySide6.QtSql: Этот модуль предоставляет классы для работы с базами данных с использованием SQL. Он включает в себя поддержку различных баз данных, таких как SQLite, MySQL и PostgreSQL.
PySide6.QtPrintSupport: Этот модуль предоставляет классы для печати документов и управления настройками печати.
Это лишь небольшой обзор наиболее важных модулей в PySide6. Каждый из этих модулей предоставляет обширный набор классов и функций для разработки различных типов приложений с графическим интерфейсом на Python.
Утилиты, поставляемые из "коробки" в PySide6
Когда Вы установили PySide6, то в ней из коробки доступны утилиты, которые помогают в разработке приложений с использованием PySide6. Вот они:
pyside6-uic: Утилита для конвертации файлов .ui (созданных в Qt Designer) в соответствующий Python-код, который создает виджеты и окна с помощью PySide6.
pyside6-rcc: Утилита для конвертации файлов .qrc (ресурсных файлов) в Python-модули, которые могут быть использованы для доступа к внедренным ресурсам, таким как изображения, шрифты и стили.
pyside6-lupdate: Утилита для обновления файлов .ts (файлы переводов) в соответствии с исходным кодом приложения, содержащим строки, подлежащие переводу.
pyside6-lrelease: Утилита для компиляции файлов .ts в файлы .qm (скомпилированные файлы переводов), которые затем могут быть загружены PySide6 приложениями для локализации.
pyside6-сm: Утилита для конвертации файлов .qm (скомпилированные файлы переводов) в Python-модули, которые могут быть использованы для доступа к локализованным строкам.
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.