СОВРЕМЕННЫЙ ГРАФИЧЕСКИЙ ИНТЕРФЕЙС НА PYTHON, используя библиотеку customtkinter

preview_player
Показать описание
В этом видео мы познакомимся с новой библиотекой для создания графического интерфейса на Python - customtkinter. С помощью этой библиотеки Вы можете создавать современный дизайн приложений также просто как и с tkinter, но приложение будет иметь дизайн как в операционных систем Windows 10 и 11, а также MacOS. Особенностью библиотеки customtkinter является возможность задавать цветовое оформление приложения для темной и светлой тем операционной системы, а также имеет на выбор несколько цветовых схем виджетов программы.
В видео мы разработаем desktop приложение с графическим интерфейсом - генератор случайных паролей. Программа имеет возможность задавать сложность паролей за счёт добавления букв верхнего и нижнего регистров, цифр и символов, а также задавать желаемую длину пароля. Ещё реализуем возможность изменения цветового оформления программы с поддержкой темной и светлой тем. Также научимся работать с несколькими файлами одного приложения. Программа будет иметь современный GUI написанный на языке программирования Python используя библиотеку customtkinter.

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 - Финал
Рекомендации по теме
Комментарии
Автор

Привет вам большое спасибо.
Надо продолжать серию такого видео урока

shuxratxonmaxmudov
Автор

Редко пишу комменты, но ты просто кроссавчик!)

nikkk
Автор

Спасибо за информацию. Как раз есть пару мелких программ с использованием tkinter, но не нравится оформление, а переписывать на pyqt не охота и громоздко )

npupaksoul
Автор

Хочу сразу отметить, что с QT вы получите немного меньшую производительность. Хотя обе библиотеки по сути - биндинги для C на Python, нужно отметить, что QT даёт больший уровень абстракции и сам по себе выглядит как комбайн (например, в нём есть API для работы с базой данных, GUI библиотека!).

Кроме этого, отмечу, что customtkinter так же написан не лучшим образом. Хотя, судя по использованию классов он подразумевает ООП подход, на деле он часто нарушает его: использует статические переменные, в том числе модифицирует их значения буквально отовсюду. Помимо этого, не везде в коде присутствует документация, тайпинги. Существующая документация же написана на скорую руку и не придерживается какого-либо единого стиля (Google/NumPy и т.п.). Некоторые вещи реализованы откровенными костылями, например импорты, которые нигде не используются, но по какой-то неуказанной нигде неведомой причине должны оставаться в коде (как следует из заданного комментария). Хочу так же отметить, что код очень неоднороден: в некоторых местах используются слишком длинные и довольно сложные к восприятию и чтению конструкции, а в других используются базовые. Не везде выполняется принцип DRY (иногда это случается даже в пределах одного файла). Очень много используются словари (которые не всегда эффективны в памяти). И ещё много небольших недочётов и помарок. Также стоит отметить, что tkinter сам по себе имеет некоторое количество неприятных багов.

Лично моё мнение - GUI на Python вообще не самое лучшее и продвинутое решение. На данный момент для GUI я предпочитаю Tauri (у него есть преимущества над Electron'ом + он использует Rust). На текущий момент времени, нормальных библиотек для работы с GUI на Python единицы (если они вообще существуют).

mcomponent
Автор

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

hfyztro
Автор

Спасибо, но есть вопрос. У меня выпадающее меню комбобокса маленькое ... Может можно исправит?

DavidDavid-zmkj
Автор

Сделай сравнение customtkinter и PyQT в плане выбора.
Контента крайне мало по многопоточности, например с трудом нашёл как запустить 2 окна одновременно (нужно создать поток с новым окном внутри петли Ткинтера перед mainloop())

dmitriykonopinskiy
Автор

Я вас очень прошу, скажите как сделать из 1х2\1х2(квадрат), колонок в 1х2\1x1(сверху 2 колонки, внизу 1)?

wfrjbmg
Автор

Не знаю зачем мне это, но интересно.Спасибо

gameskolomiec
Автор

Мне кстати интересно. А нет ли графических решений по строению окон и элементов? Как в Visual Studio > Windows form, UWP, etc. То есть, надо наугад тыкать значения чтобы понять, куда и какую кнопку нужно поставить?

RhinoTimelaps
Автор

Отличный урок, спасибо! Только нужно выбрать активный чекбокс по-умолчанию, т.к. без этого программа вылетает с ошибкой (если ни один чекбокс не выбран).

zuzxzlf
Автор

Огромное спасибо за видео. Подскажите пожалуйста, как сделать pycharm такой же удобный как у вас, чтоб кнопки запуска были справа сверху. Спасибо

wordpreslabs
Автор

На этапе "Тестируем приложение" после запуска и нажатия на кнопку 'Generate', получаю сообщение:
module 'password' has no attribute 'create_new'
Что делать?

AnatolAfendyk-EMG
Автор

Годное видео, без воды, только внутри класса почему то главная цветовая тема не меняеться(типа :(

pon
Автор

Неплохо. Надо попробовать. Интересно, как будет такое приложение под линукс выглядеть, я пишу кроссплатформенные приложения т.к. за ними будущее. Интересно будет сравнить с PyQT библиотекой, которой пользуюсь в настоящее время..

Fightertlt
Автор

Это круто но для меня есть несколько проблем. Для запуска приложения нужно входить в виртуальное окружение после чего запускать приложение. Если Я делаю его для бухгалтера допустим на винде... проще сделать джанго)) Браузеры есть везде))

Snowman
Автор

Привет, не могу нигде найти ответ на свой вопрос. Виджет Таблицы в Ткинтор умеет настраивать высоту строк или нет? Я загружаю в таблицу данные и если они не вмещаются в одну строчку и я начинаю переносить их на другую строку, то данные начинают наслаиваться друг на друга. Один элемент таблицы, пересекает ниже лежащий элемент таблицы. По сути получается грязь, текст по тексту. Кто столкнулся с этой проблемой, какое решение Вы нашли? :)... Надеюсь не забросить кодить :))... Потому-что это уже посещает мои мысли :)), когда долго что-то не получается :)...

snsjvor
Автор

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

mak
Автор

А как можно собрать это приложение в EXE-файл? Смотрел ваш видосик по этому вопросу, но приложение всё равно вылетает с ошибкой после запуска.

hfyztro
Автор

Необходимо еще инициировать checkbox, иначе при попытке генерации вылетает с ошибкой

AlexeySolovyev