СОВРЕМЕННЫЙ ГРАФИЧЕСКИЙ ИНТЕРФЕЙС НА 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 - Финал

КОМЕНТАРІ • 107

  • @shuxratxonmaxmudov7256
    @shuxratxonmaxmudov7256 10 місяців тому

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

  • @AHTOHmaister
    @AHTOHmaister Рік тому +2

    Спасибо за видео!

  • @vna2re2pac39
    @vna2re2pac39 Рік тому +1

    Спасибо за отличный видос)

  • @kirillbudanov5415
    @kirillbudanov5415 Рік тому +2

    Круто!)))
    Спасибо большое)

    • @ITHobbies
      @ITHobbies  Рік тому +1

      Мне приятно! Спасибо

  • @bulba1995
    @bulba1995 Рік тому +1

    Хорошее видео , спасибо

  • @nikkk2684
    @nikkk2684 Рік тому +1

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

  • @user-gu4rl4et1b
    @user-gu4rl4et1b 2 місяці тому

    супер видео, спасибо 🎉

  • @Anonim-im6ln
    @Anonim-im6ln Рік тому

    Very good!!

  • @user-hf9yz1tr4o
    @user-hf9yz1tr4o Рік тому +9

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

  • @npu3paksoul
    @npu3paksoul Рік тому +7

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

    • @ITHobbies
      @ITHobbies  Рік тому +3

      Сам открыл недавно для себя эту библиотеку и она действительно хороша. Замена стандартного tkinter с хорошим дизайном

  • @blazedenshinobu
    @blazedenshinobu Рік тому +3

    Классный видос
    Лайк, подписка

  • @mcomponent
    @mcomponent Рік тому +17

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

    • @ITHobbies
      @ITHobbies  Рік тому +5

      Спасибо за столь развернутый комментарий! Полезно самому было прочесть

    • @Shprotec
      @Shprotec 2 місяці тому

      У меня довольно простой проект в вузе, написал его на Tkinter, но теперь хочу сделать интерфейс более красивым. Я новичок в python, какую библиотеку лучше использовать ?

    • @yarko6734
      @yarko6734 Місяць тому

      @@Shprotec можно перепистать на custom tk он красивее выглядит

    • @bestquizMLBB
      @bestquizMLBB Місяць тому

      @Shprotec , если хочешь, более менее современный интерфейс и при этом не учить другие языки, то советую фреймворк "Flet"

  • @gameskolomiec1660
    @gameskolomiec1660 Рік тому +1

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

  • @pon396
    @pon396 Рік тому

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

  • @dmitriykonopinskiy3793
    @dmitriykonopinskiy3793 Рік тому +7

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

  • @user-zu4zx6zl2f
    @user-zu4zx6zl2f Рік тому +4

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

    • @ITHobbies
      @ITHobbies  Рік тому +2

      Ага) чет я забыл про это! Подправлю на гитхабе

    • @Greiten
      @Greiten Рік тому +4

      @@ITHobbies Проверку можно сделать если нет ни одного чекбокса, то просит выбрать хотя бы один

  • @Snowman8526
    @Snowman8526 Рік тому +1

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

    • @ITHobbies
      @ITHobbies  Рік тому +4

      Можно его сделать исполняемым файлом с расширением .exe если для винды. Есть видео на канале как это сделать

  • @RhinoTimelaps
    @RhinoTimelaps Рік тому +2

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

    • @ivanh2674
      @ivanh2674 Рік тому

      почему есть чере ui , pyqt

  • @Fightertlt
    @Fightertlt Рік тому +1

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

    • @ITHobbies
      @ITHobbies  Рік тому

      Для простых утилит норм. Если что-то серьезное то конечно pyqt

    • @Fightertlt
      @Fightertlt Рік тому

      @@ITHobbies В моем случае достаточно. Я интерфейс пишу для работы с СУБД, типа: внести данные, изменить, удалить, сформировать отчет. можно это в виде веба сделать, но десктоп приложение да еще и кросплатформенное епе-то больше пользователям привычно. Задачу перенес с делфи, с которой пользователи 2 десятка лет работали. Да и опыта в веб разработке нету, а так переделал интерфейс на современный и ладно.

    • @ITHobbies
      @ITHobbies  Рік тому

      В PyQt работаете с БД через qsqlquerymodel?

    • @volodymyr.storozhuk
      @volodymyr.storozhuk Рік тому

      На Linux выглядит точно также.

  • @wordpreslabs
    @wordpreslabs Рік тому +3

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

    • @ITHobbies
      @ITHobbies  Рік тому +3

      Обновляете IDE до актуальной версии и в настройках включаем новый UI

    • @wordpreslabs
      @wordpreslabs Рік тому +2

      @@ITHobbies большое спасибо. Разобрался) выглядит реально круто и удобно

    • @NickCapitan
      @NickCapitan Рік тому

      @@ITHobbies где в настройках включить новый UI?

    • @Sensys93
      @Sensys93 Рік тому

      @@NickCapitan настройки New UI

  • @mak32
    @mak32 Рік тому +2

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

    • @ITHobbies
      @ITHobbies  Рік тому +1

      Python и мобильная разработка действительно не очень развито. Но есть kivy и он развивается

    • @f-16fightingfalcon99
      @f-16fightingfalcon99 Рік тому +1

      @@ITHobbies Надо чтобы сам Python стал быстрее, в 3.11 сделали к этому большой шаг

    • @AlexanderOsnovnoi
      @AlexanderOsnovnoi Рік тому +1

      Вроде есть Kivy. Не знаю, насколько он хорош, на питоне не пишу, но раз существует, значит его кто-то использует

  • @DavidDavid-zm1kj
    @DavidDavid-zm1kj Рік тому

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

  • @user-wf3rj1bm5g
    @user-wf3rj1bm5g Рік тому

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

  • @user-ms6iq9hb2f
    @user-ms6iq9hb2f Рік тому +1

    Код в виде и на гитхабе отличается ;)

  • @AlexeySolovyev55
    @AlexeySolovyev55 Рік тому

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

    • @ITHobbies
      @ITHobbies  Рік тому

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

  • @user-sn9sj6vo9r
    @user-sn9sj6vo9r 14 днів тому

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

  • @AnatolAfendyk-EMG
    @AnatolAfendyk-EMG 4 місяці тому

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

  • @user-hf9yz1tr4o
    @user-hf9yz1tr4o Рік тому

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

    • @Anjinink
      @Anjinink Рік тому

      pyinstaller

    • @user-hf9yz1tr4o
      @user-hf9yz1tr4o Рік тому

      @@Anjinink я его и использовал для сборки. Собранный exe-файл вылетает с ошибкой.

    • @user-nl4tx5pf7e
      @user-nl4tx5pf7e Рік тому

      Пользуюсь auto-py-to-exe, проблем со стандартным tkinter не возникало.

  • @sashas703
    @sashas703 Рік тому

    а на этом Питоне Колду можно нарисовать?

    • @ITHobbies
      @ITHobbies  Рік тому

      Можно но будет 3 fps)

  • @finiti5548
    @finiti5548 Місяць тому +1

    Вот я не понимаю,как можно кодить десктопное приложение с GUI, если ты не видишь, как выглядит у тебя форма. Это очень не удобно. Для того, чтобы писать графический интерфейс, заранее нужно делать отдельно макет. А каждый раз запускать приложение ради того,чтобы посмотреть где находится элемент, тоже не хочется. Задача программиста делать всё максимально быстро и чётко, чтобы уложиться в дедлайн, а убить сначала время на создание примерного макета твоего интерфейса, а потом уже думать,как программно реализовать, в общем, запарно. Такое ощущение,что библиотека направлена на программистов уровня мидл - сеньор. Джунам тяжеловато будем привыкать к этому. В общем сомнительно...

  • @thedrone4695
    @thedrone4695 Рік тому

    Привет, где можно сам код посмотреть?

    • @ITHobbies
      @ITHobbies  Рік тому +1

      В описании под видео

  • @frost1k775
    @frost1k775 7 місяців тому

    помогите пожалуйста, выдаёт ошибку module password has no attribute create_new

  • @Cyr173
    @Cyr173 Рік тому +1

    Таблиц для данных нет?

    • @ITHobbies
      @ITHobbies  Рік тому

      Нет, можно встраивать из ttk

  • @insightgs2
    @insightgs2 Рік тому

    Если по умолчанию поставить "Dark" тему, то она не становится темной.

    • @ITHobbies
      @ITHobbies  Рік тому

      Можете в телеграмм отправить свой код, смогу помочь

  • @user-kr7ec3ww7p
    @user-kr7ec3ww7p Рік тому

    Но ведь у него нет визуального редактора как у qt. Зачем это г нужно? Выставлять кнопочки на форму мышкой придумали ещё лет 20 назад, алё!

  • @electro3622
    @electro3622 Рік тому +11

    Боже... Зачем использовать это, если есть GTK и LibAdwaita

    • @izerogames1915
      @izerogames1915 Рік тому

      Можете рассказать о них поподробнее пожалуйста?

    • @looongjek
      @looongjek Рік тому

      На винде из коробки работает же?

    • @electro3622
      @electro3622 Рік тому +1

      @@looongjek не знаю, не работаю под виндой

    • @mrybsdev1006
      @mrybsdev1006 Рік тому

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

    • @electro3622
      @electro3622 Рік тому

      @@mrybsdev1006 ты кринжанул из-за того, что не шаришь за GTK. Естественно он кроссплатформенный

  • @user_-Vovchik
    @user_-Vovchik Рік тому

    Нда... В PyQt это делается намного проще

    • @ITHobbies
      @ITHobbies  Рік тому

      Я бы не сказал, для простого интерфейса хорошо подходит Customtkinter. PyQt для более серьезных вещей

  • @Iceiceiceiceic
    @Iceiceiceiceic Рік тому

    Все еще не pyqt

  • @TriplesSaintRose
    @TriplesSaintRose 7 місяців тому

    посмотрел год назад ничего не понял начал учить пайтон через год все равно ничего не понял

  • @user-gw2lg9ff4i
    @user-gw2lg9ff4i Рік тому +2

    Избавляйтесь от этой дурной привычки писать в ООП

    • @ITHobbies
      @ITHobbies  Рік тому

      GUI с ООП - стандарт индустрии

    • @EvgenyKa
      @EvgenyKa Рік тому +1

      Только спагетти и дублирование! Вы что, макароны любите меньше, чем бездушные инкапсуляции, наследования , прости господи, полиморфизм? Может ещё и метапрограммированием балуетесь? А?)))

    • @PrizrakZamkov
      @PrizrakZamkov Рік тому +8

      Избавляйтесь от этой дурной привычки писать комментарии

    • @user-gw2lg9ff4i
      @user-gw2lg9ff4i Рік тому

      @@PrizrakZamkov Перестань себе швабру в задний проход пихать!!!

    • @user-mc8tn9qn3d
      @user-mc8tn9qn3d Рік тому

      ну давай аргументируй почему нужно писать не в ООП

  • @hgmdev
    @hgmdev Рік тому

    Стыд)

  • @user-zo4qp1ff9q
    @user-zo4qp1ff9q Рік тому

    Ужасно, не пишите такой код. Естественно куча ошибок....

    • @user-zo4qp1ff9q
      @user-zo4qp1ff9q Рік тому

      Вместо pillow image tkinter научили принимать бунарник

  • @_M.i.h.a.i.l._
    @_M.i.h.a.i.l._ Рік тому +1

    Гайд годный но кахтавасть если честно мешает понимаю. Сам тоже картавлю, но вродь не так сильно))

  • @haykera2338
    @haykera2338 10 місяців тому +2

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

  • @Ivashkinmd
    @Ivashkinmd Рік тому +2

    Можно р научится говорить, а не лениться это сделать?

    • @Gitenua
      @Gitenua Рік тому +5

      минутка тупого юмора

  • @pro100deskree
    @pro100deskree Рік тому

    Ти з України?
    Чому б тобі не перейти на українську? В україномовному ютубі дуже не вистачає такого контенту як в тебе....
    Я б тоді підписався і слідкував за твоїми відосами)

    • @ITHobbies
      @ITHobbies  Рік тому +3

      Так, я почав створювати укр канал
      youtube.com/@recode9916

    • @pro100deskree
      @pro100deskree Рік тому

      @@ITHobbies Підписався. Чекатиму на нові відео)

  • @user-zy9jb6li2c
    @user-zy9jb6li2c Рік тому +5

    С сожалением наблюдаю деградацию технологий разработки - писать интерфейс вручную 25 минут для пары кнопок, это абсурд. Куда катится этот мир?! В 2000 году были сделаны величайшие разработки C-Builder и Delphi, с помощью которых аналогичное приложение можно сделать буквально написав пару строчек кода, минуты за 2-3. Но видимо я чего то не понимаю....

    • @ASUSVOLT
      @ASUSVOLT Рік тому

      Как я вас прекрасно понимаю! Один из студентов писал на пайтоне десктопное приложение. Времени на это ушло не особо много, но вот ui был приветом из времён win мелениум и код был полон этих настроек ui и событий. Тут в видео хотя бы была задумка разбить логику и ui, но у студента всё было вместе.
      WPF, net maui хоть что то современное. Да и дельфя ещё годится для этого. Но пайтон...

    • @vladimirmashkov
      @vladimirmashkov Рік тому +1

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

    • @clarkdevlin8109
      @clarkdevlin8109 Рік тому

      @@vladimirmashkov ну, в питоне он есть и незачем городить другие библиотеки, в питоне в принципе gui никому не нужен..

    • @slashfast
      @slashfast 3 місяці тому

      @@clarkdevlin8109 не соглашусь. Если был бы не нужен, то не было библиотек, а их нормальное количество. Тот же Flet развивается активно.

  • @1Chitus
    @1Chitus Рік тому +2

    Спасибо за видео!

  • @Ivashkinmd
    @Ivashkinmd Рік тому

    Можно р научится говорить, а не лениться это сделать?