как создать приложение на python с интерфейсом

Python GUI: создаём простое приложение с PyQt и Qt Designer

Авторизуйтесь

Python GUI: создаём простое приложение с PyQt и Qt Designer

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом

Эта статья предназначена для тех, кто только начинает своё знакомство с созданием приложений с графическим интерфейсом (GUI) на Python. В ней мы рассмотрим основы использования PyQt в связке с Qt Designer. Шаг за шагом мы создадим простое Python GUI приложение, которое будет отображать содержимое выбранной директории.

Что нам потребуется

Нам понадобятся PyQt и Qt Designer, ну и Python, само собой.

В этой статье используется PyQt5 с Python 3, но особых различий между PyQt и PySide или их версиями для Python 2 нет.

Windows: PyQt можно скачать здесь. В комплекте с ним идёт Qt Designer.

macOS: Вы можете установить PyQt с помощью Homebrew:

$ brew install pyqt5

Скачать пакет с большинством компонентов и инструментов Qt, который содержит Qt Designer, можно по этой ссылке.

Linux: Всё нужное, вероятно, есть в репозиториях вашего дистрибутива. Qt Designer можно установить из Центра Приложений, но PyQt придётся устанавливать через терминал. Установить всё, что нам понадобится, одной командой можно, например, так:

Если вы видите сообщение, что такой команды нет или что-то в таком роде, попробуйте загуглить решение проблемы для вашей операционной системы и версии PyQt.

Дизайн

Основы

Теперь, когда у нас всё готово к работе, давайте начнём с простого дизайна.

Откройте Qt Designer, где вы увидите диалог новой формы, выберите Main Window и нажмите Create.

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом

После этого у вас должна появиться форма — шаблон для окна, размер которого можно менять и куда можно вставлять объекты из окна виджетов и т.д. Ознакомьтесь с интерфейсом, он довольно простой.

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

Все элементы формы и их иерархия по умолчанию отображаются в правой части окна Qt Designer под названием Object Inspector. Вы с лёгкостью можете удалять объекты, кликая по ним правой кнопкой мыши в этом окне. Или же вы можете выбрать их в основной форме и нажать клавишу DEL на клавиатуре.

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом

Теперь перетащите куда-нибудь в основную форму List Widget (не List View) и Push Button из Widget Box.

Макеты

Вместо использования фиксированных позиций и размеров элементов в приложении лучше использовать макеты. Фиксированные позиции и размеры у вас будут выглядеть хорошо (пока вы не измените размер окна), но вы никогда не можете быть уверены, что всё будет точно так же на других машинах и/или операционных системах.

Макеты представляют собой контейнеры для виджетов, которые будут удерживать их на определённой позиции относительно других элементов. Поэтому при изменении размера окна размер виджетов тоже будет меняться.

Давайте создадим нашу первую форму без использования макетов. Перетащите список и кнопку в форме и измените их размер, чтобы вышло вот так:

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом

Теперь в меню Qt Designer нажмите Form, затем выберите Preview и увидите что-то похожее на скриншот выше. Выглядит хорошо, не так ли? Но вот что случится, когда мы изменим размер окна:

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом

Наши объекты остались на тех же местах и сохранили свои размеры, несмотря на то что размер основного окна изменился и кнопку почти не видно. Вот поэтому в большинстве случаев стоит использовать макеты. Конечно, бывают случаи, когда вам, например, нужна фиксированная или минимальная/максимальная ширина объекта. Но вообще при разработке приложения лучше использовать макеты.

Основное окно уже поддерживает макеты, поэтому нам ничего не нужно добавлять в нашу форму. Просто кликните правой кнопкой мыши по Main Window в Object Inspector и выберите Lay outLay out vertically. Также вы можете кликнуть правой кнопкой по пустой области в форме и выбрать те же опции:

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом

Ваши элементы должны быть в том же порядке, что и до внесённых изменений, но если это не так, то просто перетащите их на нужное место.

Так как мы использовали вертикальное размещение, все элементы, которые мы добавим, будут располагаться вертикально. Можно комбинировать размещения для получения желаемого результата. Например, горизонтальное размещение двух кнопок в вертикальном будет выглядеть так:

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом

Если у вас не получается переместить элемент в главном окне, вы можете сделать это в окне Object Inspector.

Последние штрихи

Теперь, благодаря вертикальному размещению, наши элементы выровнены правильно. Единственное, что осталось сделать (но не обязательно), — изменить имя элементов и их текст.

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

Свойства элементов можно изменить в разделе Property Editor.

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

Измените значение objectName на btnBrowse и text на Выберите папку.

Должно получиться так:

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом

Сохраните дизайн как design.ui в папке проекта.

Превращаем дизайн в код

Пишем код

Теперь у нас есть файл design.py с нужной частью дизайна нашего приложения и мы начинать работу над созданием его логики.

Используем дизайн

Для Python GUI приложения понадобятся следующие модули:

Также нам нужен код дизайна, который мы создали ранее, поэтому его мы тоже импортируем:

В этом классе мы будем взаимодействовать с элементами интерфейса, добавлять соединения и всё остальное, что нам потребуется. Но для начала нам нужно инициализировать класс при запуске кода. С этим мы разберёмся в функции main() :

И чтобы выполнить эту функцию, мы воспользуемся привычной конструкцией:

В итоге main.py выглядит таким образом:

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом

Но нажатие на кнопку ничего не даёт, поэтому нам придётся с этим разобраться.

Добавляем функциональность в наше Python GUI приложение

Начнём с кнопки Выберите папку. Привязать к функции событие вроде нажатия на кнопку можно следующим образом:

Для открытия диалога выбора папки мы можем использовать встроенный метод QtWidgets.QFileDialog.getExistingDirectory :

Для отображения содержимого директории нам нужно импортировать os :

И получить список содержимого следующим образом:

В итоге функция browse_folder должна выглядеть так:

Теперь, если запустить приложение, нажать на кнопку и выбрать директорию, мы увидим:

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом

Так выглядит весь код нашего Python GUI приложения:

Это были основы использования Qt Designer и PyQt для разработки Python GUI приложения. Теперь вы можете спокойно изменять дизайн приложения и использовать команду pyuic5 без страха потерять написанный код.

Источник

Графический интерфейс на Python за 5 минут

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом

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

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

Библиотеки Python, которые можно использовать для графического интерфейса

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом
Статья переведена при поддержке компании EDISON Software, которая заботится о здоровье программистов и их завтраке, а также разрабатывает программное обеспечение на заказ.

Однако, к счастью, я наткнулся на четвёртый вариант, который был мне по душе. Это PySimpleGUI, я до сих пор ей пользуюсь. Как ни странно, эта библиотека использует все 3 популярные библиотеки, о которых шла речь выше, но при этом абстрагируется от супер технических моментов

Давайте погрузимся в эту библиотеку и изучим ее, одновременно решая реальную проблему.

Проверьте два одинаковых файла

Я рассказал как это сделать в своей статье “3 быстрых способа сравнить данные в Python”. Мы можем использовать первый раздел, проверку целостности данных, чтобы попытаться создать пользовательский интерфейс.

Запрограммируйте графический интерфейс

Чтобы создать графический интерфейс, можно использовать этот код:

в результате мы получим:

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом

Подключаем логику

Когда есть пользовательский интерфейс, легко понять, как подключить остальную часть кода. Нам просто нужно следить за тем, что вводит пользователь и действовать соответственно. Мы можем очень легко сделать это с помощью следующего кода:

Источник

Быстрый, мощный интерфейс на Python

И минимум зависимостей

Dear PyGui принципиально отличается от других фреймворков GUI Python. Рендеринг на GPU, более 70 виджетов, встроенная поддержка асинхронности — это лишь некоторые возможности Dear PyGui. Руководством по работе с этим пакетом делимся к старту курса по разработке на Python.

Парадигма Retained Mode позволяет создавать чрезвычайно динамичные интерфейсы. Dear PyGui не использует нативные виджеты, а рисует с помощью видеокарты компьютера, как PyQt (используя API рендеринга DirectX11, Metal и Vulkan).

Почему Dear PyGui?

По сравнению с другими библиотеками Python GUI Dear PyGui уникален:

Простая встроенная поддержка асинхронных функций.

Полное управление темами и стилями.

Простое встроенное окно логирования.

70+ виджетов, сотни их комбинаций.

Подробная документация, примеры и беспрецедентная поддержка.

Основные моменты

Темы — 10 встроенных тем и система пользовательских тем.

Graphing — API для работы с графиками (обертка ImPlot).

Canvas — низкоуровневый API для рисования.

Logging — API логирования.

Виджеты — просто прокрутите вниз, чтобы увидеть их.

Установка

Убедитесь, что у вас установлен как минимум Python 3.7 (64 бит).

Зависимости

Начинаем писать GUI

Dear PyGui предоставляет разработчикам python простой способ создания быстрых и мощных графических интерфейсов для скриптов. Dear PyGui состоит из окна программы, окон и виджетов. Окно программы является главным окном вашей программы и создаётся в конце основного скрипта вызовом start_dearpygui().

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсомВывод

В приведённом ниже примере программы показано окно программы и ещё одно окно, в котором с помощью встроенной функции документации отображается документация:

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсомВстроенная документация

Dear PyGui состоит из двух модулей: dearpygui.core и dearpygui.simple.

dearpygui.core содержит базовую функциональность Dear PyGUI. Через ядро можно делать всё. На самом деле это расширение на языке Си, просто обёрнутое в модуль.

dearpygui.simple содержит обёртки и утилиты уже из кода ядра для удобства работы с Dear PyGui.

Инструменты разработки

В Dear PyGui есть полезные инструменты разработки. Метод show_source() принимает имя входного файла Python.

Встроенное логирование

Мощный инструмент разработки — Logger, он вызывается методом show_logger(). Уровней логирования 6: Trace, Debug, Info, Warning, Error, Off. Логгер выведет установленный уровень и отфильтрует все уровни ниже.

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсомЛогирование

Уровень лога mvTRACE покажет все команды.

Пишем виджеты и контейнеры

Элементы библиотеки можно разделить на:

обычные предметы: поля ввода, кнопки;

контейнеры (окно, всплывающее окно, всплывающая подсказка, элемент-потомок);

элементы макета (группа, следующая колонка (next_column)).

Элементы добавляются командами с префиксом add_.

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсомВиджеты

Каждый элемент должен иметь уникальное имя. По умолчанию, если это применимо, имя станет меткой элемента. При желании можно изменить метку:

Поставьте ## после имени (например displayed_name##unique_part). Всё после ## в отображаемом имени будет скрыто.

Ключевое слово label, которое отобразит метку вместо имени.

Некоторые имена элементов автоматически генерируются для элементов без аргументов имени в функции (т. е. same_line). Но у них есть необязательное ключевое слово name, и его можно заполнить, когда понадобится ссылка на элемент.

Контекстные менеджеры dearpygui.simple автоматизируют вызов функции end, позволяют сворачивать код и в самом коде показывают иерархию.

По умолчанию элементы создаются в порядке их описания в коде.

Но, указав контейнер parent, элементы можно добавлять не по порядку. parent вставляет виджет в конец списка дочерних элементов родителя. before в сочетании с ключевым словом parent помещает один элемент перед другим в списке элементов-потомков.

Виджеты

Каждый виджет ввода имеет значение, которое можно задать с помощью ключевого слова default_value при создании или во время выполнения команды set_value. Для доступа к значению виджета можно использовать команду get_value. Мы также можем передавать значение виджета непосредственно в переменную python и из неё.

Виджеты и обратные вызовы окна

Каждый элемент ввода имеет обратный вызов, который выполняется при взаимодействии с виджетом.

Обратные вызовы добавляют виджетам функциональность. Они могут присваиваться до или после создания элемента функцией set_item_callback, как в коде ниже.

Каждый обратный вызов должен принимать аргументы sender и data.

sender сообщает обратному вызову имя элемента, которым он вызывается.

Аргумент data применяется разными стандартными обратными вызовами для отправки дополнительных данных через определение callback_data.

Виджеты оконного типа имеют специальные обратные вызовы, которые срабатывают при таких событиях, как изменение размера или закрытие окна. Обратные вызовы для конкретных окон могут быть применены к виджету любого типа окна. on_close будет запускать обратный вызов, назначенный ключевому слову, при закрытии окна, а set_resize_callback() будет запускаться при каждом изменении размера контейнера и может быть установлен на любое конкретное окно ключевым словом handler, по умолчанию это MainWindow.

Если вы хотите, чтобы обратный вызов выполнялся на каждом фрейме, воспользуйтесь set_render_callback().

Добавляем и удаляем виджеты в рантайме

С помощью Dear PyGui вы можете динамически добавлять и удалять любые элементы во время выполнения программы. Это можно сделать, используя обратный вызов для выполнения команды add_* нужного элемента, указав родителя, к которому будет принадлежать элемент. По умолчанию, если не указан родительский элемент, виджет будет добавлен в MainWindow.Используя ключевое слово before при добавлении элемента, вы можете контролировать, перед каким элементом родительской группы будет находиться новый элемент. По умолчанию новый виджет помещается в конец.

Хранилище значений и данных

Когда новый виджет добавлен, в системное хранилище добавляется некое значение. По умолчанию идентификатор этого значения — имя виджета. Значения извлекаются из системы значений с помощью get_value(«source name»). Меняются значения вручную, методом set_value(«source name»). Чтобы виджеты разных типов значений могли использовать одно и то же значение в системе хранения, сначала должно быть создано большее значение.

Помните, что вы можете хранить любой объект Python в хранилище данных, даже пользовательские типы данных.

Вот так можно хранить отображение:

Очень важный виджет для функциональности GUI — это бар меню. Строки меню всегда отображаются в верхней части окна и состоят в основном из:

Лента главного меню.

Конкретные элементы меню.

Элементы меню добавляются слева направо, а элементы подменю — сверху вниз. Они могут быть вложенными, насколько это необходимо:

Диалоги выбора файлов и каталогов

Диалог выбора каталога вызывается select_directory_dialog(), которому необходим обратный вызов.

Файловые диалоги вызываются open_file_dialog(), которому должен быть задан обратный вызов. Аргумент data возвращаемого обратного вызова будет заполнен списком строк из пути к папке и к файлу. Расширения — это дополнительное ключевое слово к диалогу файлов, которое позволяет отфильтровать файлы в диалоге по расширениям.

Графики

В Dear PyGui есть «простые графики» и «графики», оба типа могут быть динамическими.

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсомГрафики

Простые графики берут список и строят данные по оси y в зависимости от количества элементов в списке. Это могут быть линейные графики или гистограммы.

В «графиках» используются координаты x и y. Вызывать их нужно командой add_plot(), затем данные могут быть добавлены в виде линейного или рассеянного ряда. Вот список возможностей:

Клик с перетаскиванием панорамирует график.

Клик с перетаскиванием по оси панорамирует график в одном направлении.

Двойной клик масштабирует данные.

Правый клик и перетаскивание увеличивают область.

Двойной правый клик открывает настройки.

Shift + правый клик и перетаскивание масштабирует область, заполняющую текущую ось.

Прокрутка колёсика позволяет рассмотреть детали.

Прокрутка колёсика по оси увеличивает только по этой оси.

Можно переключать и скрывать наборы данных на легенде.

Простые графики можно сделать динамическими, изменив значение вызова plot с помощью set_value().

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсомУправление графиками

Динамическая функция может очищать график и добавлять новые данные с помощью обратного вызова, например для рендеринга или обратного вызова элемента.

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсомПредставления графиков

Рисование и холст

В Dear PyGui есть низкоуровневый API, хорошо подходящий для рисования примитивов, пользовательских виджетов и даже динамических рисунков.

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом

Рисунок запускается вызовом add_drawing(). Начало холста — в левом нижнем углу.

Хотя рисунки можно сделать динамичными, очищая и перерисовывая всё заново, предлагается метод эффективнее: чтобы сделать рисунок динамичным, мы должны использовать ключевое слово tag для обозначения элементов, которые хотим перерисовать. Затем нужно просто вызвать команду рисования, используя тот же тег. Это позволит удалить только один элемент и перерисовать его с помощью новой команды.

Дельта-время и внутренние часы

Dear PyGui имеет встроенные часы для проверки общего времени работы. get_total_time(), возвращается общее время работы в секундах.

Также с помощью команды get_delta_time() мы можем проверить время между кадрами рендеринга в секундах.

Таблицы

Dear PyGui имеет простой API таблиц, который хорошо подходит для статических и динамических таблиц.

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсомТаблицы

Виджет таблицы запускается вызовом add_table(). Для редактирования виджета таблицы мы можем использовать методы add_row(), add_column(), которые добавят строку/столбец к последнему слоту таблицы.

В качестве альтернативы мы можем вставить строки/столбцы с помощью insert_row(), insert_column(). Столбцы и строки вставляются в соответствии с их индексным аргументом. Если указанный индекс уже существует, то выходящие столбцы/строки будут удалены, а новая строка/столбец будет вставлена по указанному индексу.

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

Опрос устройств ввода

Опрос ввода в Dear PyGui делается вызовом команды опроса в функции. Функция должна быть установлена на обратный вызов рендеринга окна, чтобы опрос происходил, когда это окно активно. Обратные вызовы рендеринга выполняются каждый кадр, Dear PyGui может опрашивать на предмет ввода между кадрами.

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсомОпрос устройств ввода Вот список функций опроса

Источник

Десктопное приложение на Python: UI и сигналы

Авторизуйтесь

Десктопное приложение на Python: UI и сигналы

Считается, что Python не лучший выбор для десктопных приложений. Однако, когда в 2016 году я собирался переходить от разработки сайтов к программному обеспечению, Google подсказал мне, что на Python можно создавать сложные современные приложения. Например blender3d, который написан на Python.

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом
Но люди, не по своей вине используют уродливые примеры графического интерфейса, которые выглядят слишком старыми, и не понравятся молодёжи. Я надеюсь изменить это мнение в своем туториале. Давайте начнём.

Мы будем использовать PyQt (произносится «Пай-Кьют‎»‎). Это фреймворк Qt, портированный с C++. Qt известен тем, что необходим C++ разработчикам. С помощью этого фреймворка сделаны blender3d, Tableau, Telegram, Anaconda Navigator, Ipython, Jupyter Notebook, VirtualBox, VLC и другие. Мы будем использовать его вместо удручающего Tkinter.

Требования

Установка

Вам нужно установить только PyQt. Откройте терминал и введите команду:

Мы будем использовать PyQt версии 5.15. Дождитесь окончания установки, это займёт пару минут.

Hello, World!

Создайте папку с проектом, мы назовём его helloApp. Откройте файл main.py, лучше сделать это vscode, и введите следующий код:

Этот код вызывает QGuiApplication и QQmlApplicationEngine которые используют Qml вместо QtWidget в качестве UI слоя в Qt приложении. Затем, мы присоединяем UI функцию выхода к главной функции выхода приложения. Теперь они оба закроются одновременно, когда пользователь нажмёт выход. Затем, загружаем qml файл для Qml UI. Вызов app.exec(), запускает приложение, он находится внутри sys.exit, потому что возвращает код выхода, который передается в sys.exit.

Добавьте этот код в main.qml:

Этот код создает окно, делает его видимым, с указанными размерами и заголовком. Объект Text отображается в середине окна.

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

Вы увидите такое окно:

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом
Обновление UI

Давайте немного обновим UI, добавим фоновое изображение и время:

Внутри типа ApplicationWindow находится содержимое окна, тип Rectangle заполняет пространство окна. Внутри него находится тип Image и другой прозрачный Rectangle который отобразится поверх изображения.

Если сейчас запустить приложение, то текст появится в левом верхнем углу. Но нам нужен левый нижний угол, поэтому используем отступы:

После запуска вы увидите следующее:

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом
Показываем текущее время

Модуль gmtime позволяет использовать структуру со временем, а strftime даёт возможность преобразовать её в строку. Импортируем их:

Теперь мы можем получить строку с текущим временем:

Строка «%H:%M:%S» означает, что мы получим время в 24 часовом формате, с часами минутами и секундами (подробнее о strtime).

Давайте создадим property в qml файле, для хранения времени. Мы назовём его currTime.

Теперь заменим текст нашей переменной:

Теперь, передадим переменную curr_time из pyhton в qml:

Это один из способов передачи информации из Python в UI.

Запустите приложение и вы увидите текущее время.

Обновление времени

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

Чтобы использовать сигналы нам нужен подкласс QObject. Назовём его Backend.

У нас уже имеется свойства для строки со временем curr_time, теперь создадим свойство backend типа QtObject в файле main.qml.

Передадим данные из Python в qml:

В qml файле один объект QtObject может получать несколько функций (называемых сигналами) из Python.

Создадим тип Connections и укажем backend в его target. Теперь внутри этого типа может быть столько функций, сколько нам необходимо получить в backend.

Таким образом мы свяжем qml и сигналы из Python.

Мы используем потоки, для того чтобы обеспечить своевременное обновление UI. Создадим две функции, одну для управления потоками, а вторую для выполнения действий. Хорошая практика использовать в названии одной из функций _.

Создадим pyqtsignal и назовём его updated, затем вызовем его из функции updater.

В этом коде updated имеет параметр arguments, который является списком, содержащим имя функции «updater». Qml будет получать данные из этой функции. В функции updater мы вызываем метод emit и передаём ему данные о времени.

Обновим qml, получив сигнал, с помощью обработчика, название которого состоит из «on» и имени сигнала:

Теперь нам осталось вызвать функцию updater. В нашем небольшом приложении, использовать отдельную функцию для вызова сигнала не обязательно. Но это рекомендуется делать в больших программах. Изменим задержку на одну десятую секунды.

Функция bootUp должна быть вызвана сразу же после загрузки UI:

Всё готово

Теперь можно запустить программу. Время будет обновляться корректно. Для того, чтобы убрать рамку, вы можете добавить в qml файл следующую строку:

Так должен выглядеть файл main.py:

Вот содержимое файла main.qml:

Сборка приложения

Для сборки десктопного приложения на Python нам понадобится pyinstaller.

Чтобы в сборку добавились все необходимые ресурсы, создадим файл spec:

Настройки файла spec

Параметр datas можно использовать для того, чтобы включить файл в приложение. Это список кортежей, каждый из которых обязательно должен иметь target path(откуда брать файлы) и destination path(где будет находится приложение). destination path должен быть относительным. Чтобы расположить все ресурсы в одной папке с exe-файлами используйте пустую строку.

Измените параметр datas, на путь к вашей папке с UI:

Параметр console установим в false, потому что у нас не консольное приложение.

Параметр name внутри вызова Exe, это имя исполняемого файла. name внутри вызова Collect, это имя папки в которой появится готовое приложение. Имена создаются на основании файла для которого мы создали spec — main.py.

Теперь можно запустить сборку:

В папке dist появится папка main. Для запуска программы достаточно запустить файл main.exe.

Так будет выглядеть содержимое папки с десктопным приложением на Python:

как создать приложение на python с интерфейсом. Смотреть фото как создать приложение на python с интерфейсом. Смотреть картинку как создать приложение на python с интерфейсом. Картинка про как создать приложение на python с интерфейсом. Фото как создать приложение на python с интерфейсом

О том, как использовать Qt Designer для создания UI приложений на Python читайте в нашей статье.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *