Красивый графический интерфейс на Python используя DearPyGui
Вставка
- Опубліковано 12 чер 2024
- ⭐ Курс ООП и Приват канал: www.zproger-school.com/?...
⭐ Телеграм канал: t.me/+WXMSs_qP6UVkNTYx
В данном видео создадим красивое десктоп приложение с полного нуля, которое позволяет управлять удаленным сервером через Paramiko.
Для этой задачи будем использовать библиотеку DearPyGui, которая позволяет создавать современный графический интерфейс. И также развернем виртуальное окружение Poetry вместо стандартного venv.
PDF файл с фишками Poetry: t.me/codeblog8/221
Исходный код проекта: (После 1000 лайков)
Красивый интерфейс на Flet: • Красивый графический и...
Современные веб-приложения на Streamlit: • Красивые веб-приложени...
Фишки DearPyGui: • Красивый графический и...
Современные приложения на CustomTkinter: • Современные графически...
📁 Github: github.com/Zproger
📁 Все плейлисты с уроками: bit.ly/39GaY89
📁 Связаться со мной: zproger777@gmail.com
📁 Поддержать канал: github.com/Zproger/donate
Тайм-коды:
0:00 - Какие возможности итоговой программы?
0:52 - Все фишки Poetry в 1 PDF файле
1:37 - Создаем проект на Poetry и устанавливаем библиотеки
3:02 - Создаем окно с логотипом программы
5:27 - Привязка нескольких шрифтов к объектам
8:18 - Добавляем статус коннекта и кнопки для навигации
9:15 - Создаем окно для авторизации на сервере
11:30 - Создаем окно для работы с файлами на сервере
13:20 - Тестируем готовый софт на DearPyGui + Paramiko
Готов поклоняться твоему каналу❤🔥
Благодарю :D
Отличное видео! Также могли бы Вы рассказать про операции с битами (не байтами, а именно с битами. 1 и 0) в Python? Напимер как сделать сдвиговый регистр для bin файла из большого кол-ва байт? Про битовые маски и т.д.? Это было бы интересно, я думаю :)
С меня, как всегда, лайк!
Мне бы хотелось посмотреть, какие есть библиотеки-движки в Питоне. Хотелось бы свою простенькую игру сделать. А PyGame, это не игровой движок, а мультимедийный фреймворк. Всю физику там нужно самому писать... Мне интересно, может ты можешь посоветовать какие-то библиотеки или фреймворки?
Есть пару таких либ, возможно видео сделаю
Здравствуй! Когда я скачиваю эту библиотеку у меня вылезает ошибка: ERROR: Could not find a version that satisfies the requirement dearpygui (from versions: none)
ERROR: No matching distribution found for dearpygui. Версия python 3.9.0
ура он это сделал zproger ты лучший dearpygui узнал только из за тебя!!!!
Благодарю!
Выравнивание текста по центру можно сделать так.
text_width = dpg.get_item_rect_size(title)[0]
text_height = dpg.get_item_rect_size(title)[1]
(window_width // 2) - (text_width // 2)
(window_height // 2) - (text_height // 2)
у DearPyGui единственный минус в том что нет поддержки русского языка, можно поставить свой шрифт с русским языком, но если вводить кириллицу в input он не будет отображаться :(
Возможно скоро исправят =)
Это далеко не единственный минус... Это и многое другое, как указал автор, делается через костыли, что вызывает отторжение. Из-за того, что пакет работает с ansi(!) кодировкой, а не с utf-8, для русского нужны функции пакета:
- dpg.add_font_range_hint(dpg.mvFontRangeHint_Cyrillic),
- pg.add_char_remap(...) на каждую букву.
Но, невозможно (или я не нашел) ввести русский заголовок окна приложения!
Пакет привлекает своим классным интерфейсом в отличие от qt (обычный виндовый интерфейс), flet (топорные виджеты) и kivy (чуть получше, для андротелефона пойдет).
Ещё огромный минус в том, что разработчик спрятал от нас (съинкапсулировал) все вкусности графических объектов (размеры виджетов, цвета и пр.), оставив нам лишь куцый список функций с ограниченными возможностями по модифицированию виджетов.
Меня еще, например, после недолгого использования перестало удовлетворять поведение меню окна. При нормальном поведении чтобы открыть меню нужно кликнуть мышью по разделу меню, и потом, перейдя курсором на другой раздел меню, старый раздел должен закрыться, а новый - открыться автоматически. Но нет, здесь нужно опять щёлкать мышью (Issue#2131). Вроде бы мелочь, но напрягает. И таких мелочей в пакете накапливается на то, чтобы перейти в конце концов на qt(
Пакет был бы хорош, если бы практически не остановился. А жаль! Мог бы получиться наикрутейший ГУИ-фреймворк. Ну, невозможно одному тянуть такую махину! Над такими пакетами, как qt и kivy работают целые команды. А здесь основной разработчик Джонатан Хоффстадт из Хьюстона (Техас) сейчас посвящает себя, в основном, лёгкому игровому движку Pilot Light, изредка исправляя баги в DearPyGui. Сужу по активности на github.
@@zproger
Всё работает с этим кодом:
import dearpygui.dearpygui as dpg
dpg.create_context()
big_let_start = 0x00C0 # Capital "A" in cyrillic alphabet
big_let_end = 0x00DF # Capital "Я" in cyrillic alphabet
small_let_end = 0x00FF # small "я" in cyrillic alphabet
remap_big_let = 0x0410 # Starting number for remapped cyrillic alphabet
alph_len = big_let_end - big_let_start + 1 # adds the shift from big letters to small
alph_shift = remap_big_let - big_let_start # adds the shift from remapped to non-remapped
with dpg.font_registry():
with dpg.font("fonts/Akrobat-SemiBold.otf", 18) as default_font:
dpg.add_font_range_hint(dpg.mvFontRangeHint_Default)
dpg.add_font_range_hint(dpg.mvFontRangeHint_Cyrillic)
biglet = remap_big_let # Starting number for remapped cyrillic alphabet
for i1 in range(big_let_start, big_let_end + 1): # Cycle through big letters in cyrillic alphabet
dpg.add_char_remap(i1, biglet) # Remap the big cyrillic letter
dpg.add_char_remap(i1 + alph_len, biglet + alph_len) # Remap the small cyrillic letter
biglet += 1 # choose next letter
dpg.bind_font(default_font)
dpg.create_viewport(title='Основное окно программы', width=800, height=600)
dpg.setup_dearpygui()
with dpg.window(label="Еще одно окно"):
dpg.add_text("Просто текст")
dpg.add_button(label="Сохранить")
dpg.add_input_text(label="строка")
dpg.add_slider_float(label="число с плавающей точкой")
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()
@@zproger До сих пор не исправили? Мусор тогда.
@@4kaSOSiso 2024-й (январь) нормальной работы с русскими буквами добиться не удалось... (может, конечно, у меня руки кривые...)
А где можно скачать именно этот исходник я везде искал
Расскажи каким дистрибутивом линукса пользуешься. Хочу такой же.
Arch Linux BSPWM
Здравствуй Zproger[IT]. Можешь посоветовать новичку как практиковаться после основ Python и где? Знаю есть платформы Leetcode, codewars, hackerrank, помогут ли они мне?
Можно либо использовать эти платформы либо начать делать проекты + параллельно внедрять в них новые изученные технологии.
@@zproger спасибо за ответ
5:23 как вы сделали окно плавающим?
Возможно, вопрос уже набил оскомину, но я пока его не встречал. Где взять такое оформление и что какой дистрибутив?
Это BSPWM. Дистрибутив Arch Linux.
Process finished with exit code -1073741819 (0xC0000005) как исправить ошибку?
Какой у тебя линукс? Что за оформление такое красивое?😮🎉
BSPWM
Что за ide?
Я люблю на PyQT5 писать,
на это есть несколько причин:
1. Много язычность, используя QT Designer или другие программы можно создавать приложения как для Python так и для других ЯП например C++
2. Удобный конструктор приложения (QT Designer и т.д программы)
Есть один замечательный фреймворк для создания настольных приложений из вед-приложений - Tauri. Схож с electron, но легче, быстрее и + работает на rust. И в Roadmap разработчиков есть планы на связку с python. Вот такие, вот пироги.
Но это в будущем.
Благодарю, честно, не пробовал еще его юзать, но думаю что штука хорошая.
Какую операционную систему и какую среду программирование ты используешь?
Арч операционка, среду не узнал
Родной мой, расскажи, пожалуйста про reflex (раньше назывался pynecone) мне кажется он стоит того, чтобы о нём рассказать)
Спасибо за идею, возможно сделаю
javascript tutorials when?
а какой ты редактор используешь?
Pycharm
Что за окружение? Красивая ОС, Gnome?
Это BSPWM
Скинь образ своей ОС бро, очень красивая
UP UP UP UP UP UP UP UP UP UP UP UP UP UP
Скину когда будет готова ;)
Это винда у вас или линукс?
Линукс
Да уж, любит же девелопер декрпайгуи контекстные менеджеры
жду конфиг nvim день 35
nvchad.
Автокомплит толком не работает.
Nvchad изначально для веб'а разрабатывался, но даже там автокоплита нет.
Штука в том что надо настроить lsp сервер. Поставил lunarvim через lspinstall скачал pyright flake8 и ещё что то сижу радуюсь. Может я криворукий или ещё что но такой фокус у меня не прошёл с nvchad. И у lunarvim есть плюс один пробел +w сохраняет изменения и пробел q выходит из файла это довольно удобно
Dearpygui конечно хорош, но flet во всех аспектах его выигрывает. Пишу сейчас на ней проект и просто чудо фреймворк)
Есть такое ;)
Они для разных задач
@@Amigun_yo а подробнее? В чем разница? Вот я их не тыкал, не вижу кардинальной разницы по видео.
Політичне питання: z- підтримка війни чи скорочення від the ?
этому нику 4 года
Есть такой язык, кстати, Z# называется (он любительский), просто забавно, что видео про него вышло за пару недель до начала войны...
0:17 поаккуратнее с -языком- клавишами, молодой человек, следите за своим английским =)
(Шучу)
Нашёл на чём делать GUI - на DearPy... Это ж говнище мерзкое!
Это как сказать что яблоки вкуснее бананов, это ведь абстрактно и ваше мнение не может быть 100% истиной для всех. Ну и приложение я сделал именно на нем, потому что в прошлом видео обещал это реализовать. Как раз таки об этом я и говорил в первых минутах видео ;)
А что предлагаете тогда?
DPG хоть и выглядит современно, но функционал хромает, всё нужно делать на костылях, так ещё и противная система написания через with. Не совсем говнище, но всё таки мерзкое, даже на customtkinter делать GUI значительно приятнее. Из вариантов только пересаживаться на QT под PySide, там хотя бы виджеты есть.