СОВРЕМЕННЫЙ ГРАФИЧЕСКИЙ ИНТЕРФЕЙС НА PYTHON, используя библиотеку customtkinter
Вставка
- Опубліковано 18 чер 2024
- В этом видео мы познакомимся с новой библиотекой для создания графического интерфейса на Python - customtkinter. С помощью этой библиотеки Вы можете создавать современный дизайн приложений также просто как и с tkinter, но приложение будет иметь дизайн как в операционных систем Windows 10 и 11, а также MacOS. Особенностью библиотеки customtkinter является возможность задавать цветовое оформление приложения для темной и светлой тем операционной системы, а также имеет на выбор несколько цветовых схем виджетов программы.
В видео мы разработаем desktop приложение с графическим интерфейсом - генератор случайных паролей. Программа имеет возможность задавать сложность паролей за счёт добавления букв верхнего и нижнего регистров, цифр и символов, а также задавать желаемую длину пароля. Ещё реализуем возможность изменения цветового оформления программы с поддержкой темной и светлой тем. Также научимся работать с несколькими файлами одного приложения. Программа будет иметь современный GUI написанный на языке программирования Python используя библиотеку customtkinter.
Ссылка на github программы: github.com/ithobbies/Password...
Ссылка на github библиотеки: github.com/TomSchimansky/Cust...
Телеграм канал для общения - t.me/ithband
Телеграм канал - t.me/ithobbies
0:00 - Обзор библиотеки customtkinter
1:07 - Пример программы на customtkinter
1:55 - Приложение Password generator
2:35 - Создание нового проекта в PyCharm
2:51 - Основной Python файл программы
3:00 - Установка библиотеки customtkinter
3:15 - Импорт библиотеки customtkinter
3:33 - Базовый шаблон программы с интерфейсом
5:32 - Добавление логотипа приложения
9:19 - Фрейм для элементов интерфейса
10:42 - Поле вывода пароля
11:42 - Кнопка генерации пароля
13:47 - Фрейм для элементов настройки сложности пароля
14:23 - Слайдер длины пароля
16:38 - Счетчик длины пароля
17:10 - Чекбоксы настройки сложности пароля
21:22 - ComboBox выбора оформления приложения
22:04 - Функция изменения оформления программы
23:51 - Связываем значения слайдера и счетчика
25:53 - Получение перечня символов для формирования пароля
27:36 - Модуль password - генерация случайного пароля
29:18 - Функция генерации пароля по нажатию на кнопку
31:33 - Значения по умолчанию
32:50 - Тестируем приложение
33:12 - Финал
Привет вам большое спасибо.
Надо продолжать серию такого видео урока
Спасибо за видео!
Спасибо за отличный видос)
Круто!)))
Спасибо большое)
Мне приятно! Спасибо
Хорошее видео , спасибо
Редко пишу комменты, но ты просто кроссавчик!)
Спасибо 🙏
супер видео, спасибо 🎉
Very good!!
Было бы ещё неплохо, чтобы при вводе числа в GTkEntry изменялось положение ползунка.
Спасибо за информацию. Как раз есть пару мелких программ с использованием tkinter, но не нравится оформление, а переписывать на pyqt не охота и громоздко )
Сам открыл недавно для себя эту библиотеку и она действительно хороша. Замена стандартного tkinter с хорошим дизайном
Классный видос
Лайк, подписка
Спасибо!
Хочу сразу отметить, что с QT вы получите немного меньшую производительность. Хотя обе библиотеки по сути - биндинги для C на Python, нужно отметить, что QT даёт больший уровень абстракции и сам по себе выглядит как комбайн (например, в нём есть API для работы с базой данных, GUI библиотека!).
Кроме этого, отмечу, что customtkinter так же написан не лучшим образом. Хотя, судя по использованию классов он подразумевает ООП подход, на деле он часто нарушает его: использует статические переменные, в том числе модифицирует их значения буквально отовсюду. Помимо этого, не везде в коде присутствует документация, тайпинги. Существующая документация же написана на скорую руку и не придерживается какого-либо единого стиля (Google/NumPy и т.п.). Некоторые вещи реализованы откровенными костылями, например импорты, которые нигде не используются, но по какой-то неуказанной нигде неведомой причине должны оставаться в коде (как следует из заданного комментария). Хочу так же отметить, что код очень неоднороден: в некоторых местах используются слишком длинные и довольно сложные к восприятию и чтению конструкции, а в других используются базовые. Не везде выполняется принцип DRY (иногда это случается даже в пределах одного файла). Очень много используются словари (которые не всегда эффективны в памяти). И ещё много небольших недочётов и помарок. Также стоит отметить, что tkinter сам по себе имеет некоторое количество неприятных багов.
Лично моё мнение - GUI на Python вообще не самое лучшее и продвинутое решение. На данный момент для GUI я предпочитаю Tauri (у него есть преимущества над Electron'ом + он использует Rust). На текущий момент времени, нормальных библиотек для работы с GUI на Python единицы (если они вообще существуют).
Спасибо за столь развернутый комментарий! Полезно самому было прочесть
У меня довольно простой проект в вузе, написал его на Tkinter, но теперь хочу сделать интерфейс более красивым. Я новичок в python, какую библиотеку лучше использовать ?
@@Shprotec можно перепистать на custom tk он красивее выглядит
@Shprotec , если хочешь, более менее современный интерфейс и при этом не учить другие языки, то советую фреймворк "Flet"
Не знаю зачем мне это, но интересно.Спасибо
Спасибо)
Годное видео, без воды, только внутри класса почему то главная цветовая тема не меняеться(типа CTk.set_default_color_theme("green")) :(
Сделай сравнение customtkinter и PyQT в плане выбора.
Контента крайне мало по многопоточности, например с трудом нашёл как запустить 2 окна одновременно (нужно создать поток с новым окном внутри петли Ткинтера перед mainloop())
PySide6 (PyQt6 низзя пользовать в коммерческих проектах)
Отличный урок, спасибо! Только нужно выбрать активный чекбокс по-умолчанию, т.к. без этого программа вылетает с ошибкой (если ни один чекбокс не выбран).
Ага) чет я забыл про это! Подправлю на гитхабе
@@ITHobbies Проверку можно сделать если нет ни одного чекбокса, то просит выбрать хотя бы один
Это круто но для меня есть несколько проблем. Для запуска приложения нужно входить в виртуальное окружение после чего запускать приложение. Если Я делаю его для бухгалтера допустим на винде... проще сделать джанго)) Браузеры есть везде))
Можно его сделать исполняемым файлом с расширением .exe если для винды. Есть видео на канале как это сделать
Мне кстати интересно. А нет ли графических решений по строению окон и элементов? Как в Visual Studio > Windows form, UWP, etc. То есть, надо наугад тыкать значения чтобы понять, куда и какую кнопку нужно поставить?
почему есть чере ui , pyqt
Неплохо. Надо попробовать. Интересно, как будет такое приложение под линукс выглядеть, я пишу кроссплатформенные приложения т.к. за ними будущее. Интересно будет сравнить с PyQT библиотекой, которой пользуюсь в настоящее время..
Для простых утилит норм. Если что-то серьезное то конечно pyqt
@@ITHobbies В моем случае достаточно. Я интерфейс пишу для работы с СУБД, типа: внести данные, изменить, удалить, сформировать отчет. можно это в виде веба сделать, но десктоп приложение да еще и кросплатформенное епе-то больше пользователям привычно. Задачу перенес с делфи, с которой пользователи 2 десятка лет работали. Да и опыта в веб разработке нету, а так переделал интерфейс на современный и ладно.
В PyQt работаете с БД через qsqlquerymodel?
На Linux выглядит точно также.
Огромное спасибо за видео. Подскажите пожалуйста, как сделать pycharm такой же удобный как у вас, чтоб кнопки запуска были справа сверху. Спасибо
Обновляете IDE до актуальной версии и в настройках включаем новый UI
@@ITHobbies большое спасибо. Разобрался) выглядит реально круто и удобно
@@ITHobbies где в настройках включить новый UI?
@@NickCapitan настройки New UI
Идеально, жаль что из Tkinter до сих пор нельзя сформировать apk файлик на мобилку кинуть (хотя бы оффлайн приложение чтобы было)
Python и мобильная разработка действительно не очень развито. Но есть kivy и он развивается
@@ITHobbies Надо чтобы сам Python стал быстрее, в 3.11 сделали к этому большой шаг
Вроде есть Kivy. Не знаю, насколько он хорош, на питоне не пишу, но раз существует, значит его кто-то использует
Спасибо, но есть вопрос. У меня выпадающее меню комбобокса маленькое ... Может можно исправит?
Я вас очень прошу, скажите как сделать из 1х2\1х2(квадрат), колонок в 1х2\1x1(сверху 2 колонки, внизу 1)?
Код в виде и на гитхабе отличается ;)
Необходимо еще инициировать checkbox, иначе при попытке генерации вылетает с ошибкой
Да знаю проблему, забыл об этом. Можно установить как значение по умолчанию
Привет, не могу нигде найти ответ на свой вопрос. Виджет Таблицы в Ткинтор умеет настраивать высоту строк или нет? Я загружаю в таблицу данные и если они не вмещаются в одну строчку и я начинаю переносить их на другую строку, то данные начинают наслаиваться друг на друга. Один элемент таблицы, пересекает ниже лежащий элемент таблицы. По сути получается грязь, текст по тексту. Кто столкнулся с этой проблемой, какое решение Вы нашли? :)... Надеюсь не забросить кодить :))... Потому-что это уже посещает мои мысли :)), когда долго что-то не получается :)...
На этапе "Тестируем приложение" после запуска и нажатия на кнопку 'Generate', получаю сообщение:
module 'password' has no attribute 'create_new'
Что делать?
А как можно собрать это приложение в EXE-файл? Смотрел ваш видосик по этому вопросу, но приложение всё равно вылетает с ошибкой после запуска.
pyinstaller
@@Anjinink я его и использовал для сборки. Собранный exe-файл вылетает с ошибкой.
Пользуюсь auto-py-to-exe, проблем со стандартным tkinter не возникало.
а на этом Питоне Колду можно нарисовать?
Можно но будет 3 fps)
Вот я не понимаю,как можно кодить десктопное приложение с GUI, если ты не видишь, как выглядит у тебя форма. Это очень не удобно. Для того, чтобы писать графический интерфейс, заранее нужно делать отдельно макет. А каждый раз запускать приложение ради того,чтобы посмотреть где находится элемент, тоже не хочется. Задача программиста делать всё максимально быстро и чётко, чтобы уложиться в дедлайн, а убить сначала время на создание примерного макета твоего интерфейса, а потом уже думать,как программно реализовать, в общем, запарно. Такое ощущение,что библиотека направлена на программистов уровня мидл - сеньор. Джунам тяжеловато будем привыкать к этому. В общем сомнительно...
Привет, где можно сам код посмотреть?
В описании под видео
помогите пожалуйста, выдаёт ошибку module password has no attribute create_new
Таблиц для данных нет?
Нет, можно встраивать из ttk
Если по умолчанию поставить "Dark" тему, то она не становится темной.
Можете в телеграмм отправить свой код, смогу помочь
Но ведь у него нет визуального редактора как у qt. Зачем это г нужно? Выставлять кнопочки на форму мышкой придумали ещё лет 20 назад, алё!
Боже... Зачем использовать это, если есть GTK и LibAdwaita
Можете рассказать о них поподробнее пожалуйста?
На винде из коробки работает же?
@@looongjek не знаю, не работаю под виндой
Так они не кроссплатформа... Кринжанул
@@mrybsdev1006 ты кринжанул из-за того, что не шаришь за GTK. Естественно он кроссплатформенный
Нда... В PyQt это делается намного проще
Я бы не сказал, для простого интерфейса хорошо подходит Customtkinter. PyQt для более серьезных вещей
Все еще не pyqt
посмотрел год назад ничего не понял начал учить пайтон через год все равно ничего не понял
Избавляйтесь от этой дурной привычки писать в ООП
GUI с ООП - стандарт индустрии
Только спагетти и дублирование! Вы что, макароны любите меньше, чем бездушные инкапсуляции, наследования , прости господи, полиморфизм? Может ещё и метапрограммированием балуетесь? А?)))
Избавляйтесь от этой дурной привычки писать комментарии
@@PrizrakZamkov Перестань себе швабру в задний проход пихать!!!
ну давай аргументируй почему нужно писать не в ООП
Стыд)
Провал…
Ужасно, не пишите такой код. Естественно куча ошибок....
Вместо pillow image tkinter научили принимать бунарник
Гайд годный но кахтавасть если честно мешает понимаю. Сам тоже картавлю, но вродь не так сильно))
спасибо конечно за контент, полезно, однако посмотрите на других кодеров, которые обучают , смотря на Вас, складывается ощущение, что вы куда то бежите, быстрее быстрее надо, в обучении так не катит, или просто вы сами не понимаете, что делаете, читаете сценарий, а потом переписываете код
пожалуйста, будьте чуть спокойнее, обьясняйте более детально что и как
Можно р научится говорить, а не лениться это сделать?
минутка тупого юмора
Ти з України?
Чому б тобі не перейти на українську? В україномовному ютубі дуже не вистачає такого контенту як в тебе....
Я б тоді підписався і слідкував за твоїми відосами)
Так, я почав створювати укр канал
youtube.com/@recode9916
@@ITHobbies Підписався. Чекатиму на нові відео)
С сожалением наблюдаю деградацию технологий разработки - писать интерфейс вручную 25 минут для пары кнопок, это абсурд. Куда катится этот мир?! В 2000 году были сделаны величайшие разработки C-Builder и Delphi, с помощью которых аналогичное приложение можно сделать буквально написав пару строчек кода, минуты за 2-3. Но видимо я чего то не понимаю....
Как я вас прекрасно понимаю! Один из студентов писал на пайтоне десктопное приложение. Времени на это ушло не особо много, но вот ui был приветом из времён win мелениум и код был полон этих настроек ui и событий. Тут в видео хотя бы была задумка разбить логику и ui, но у студента всё было вместе.
WPF, net maui хоть что то современное. Да и дельфя ещё годится для этого. Но пайтон...
Да, к сожалению Вы не учли такую вещь как кодогенерация. То есть, что бы быстро рисовать такие интерфейсы, как в Делфи нужен дополнительный инструмент, в котором вы как в графическом редакторе будете рисовать пользовательский интерфейс, а потом на каждый объект будете описывать метод и событие.
@@vladimirmashkov ну, в питоне он есть и незачем городить другие библиотеки, в питоне в принципе gui никому не нужен..
@@clarkdevlin8109 не соглашусь. Если был бы не нужен, то не было библиотек, а их нормальное количество. Тот же Flet развивается активно.
Спасибо за видео!
Спасибо!
Можно р научится говорить, а не лениться это сделать?