Зробіть вашу Python програму більш привабливою (Custom Tkinter)

pic

Бібліотека Tkinter здається дуже корисною, коли ви починаєте створювати графічні інтерфейси (GUI) в Python, але після певного використання її візуальний вигляд може здатися дещо обмеженим.

Використовуючи бібліотеку Custom Tkinter, ви можете створювати додатки, які виглядають привабливо.

Почніть із завантаження бібліотеки Custom Tkinter за допомогою наступної команди в терміналі.

pip install customtkinter

Офіційну документацію можна знайти тут.

Кольори

Усі кольори віджетів можна налаштувати. Кольори можуть задаватися так, як у стандартній бібліотеці Tkinter, наприклад, використовуючи ім'я кольору або його шістнадцятковий код.

Приклад:

import customtkinter  

app = customtkinter.CTk()  
customtkinter.CTkButton(master = app , fg_color = "red")  
customtkinter.CTkButton(master = app , fg_color="#FF0000")  

app.mainloop()

Теми та як їх налаштовувати

За замовчуванням усі віджети налаштовані на синю тему кольорів.
Зараз доступні три теми: “blue” (синя), “dark-blue” (темно-синя) та “green” (зелена).

Ви можете встановити тему кольорів на початку вашого скрипту:

customtkinter.set_default_colour_theme("green") #Значення можуть бути "blue" (за замовчуванням), "green" або "dark-blue"

Ви навіть можете створити свою власну тему кольорів, вказавши шлях до вашого .json файлу.

Файл .json можна створити, використовуючи наступний шаблон:

{  
 "CTk": {  
 "fg_color": ["gray95", "gray10"]  
 },  
 "CTkToplevel": {  
 "fg_color": ["gray95", "gray10"]  
 },  
 "CTkFrame": {  
 "corner_radius": 6,  
 "border_width": 0,  
 "fg_color": ["gray90", "gray13"],  
 "top_fg_color": ["gray85", "gray16"],  
 "border_color": ["gray65", "gray28"]  
 },  
 "CTkButton": {  
 "corner_radius": 6,  
 "border_width": 0,  
 "fg_color": ["#3a7ebf", "#1f538d"],  
 "hover_color": ["#325882", "#14375e"],  
 "border_color": ["#3E454A", "#949A9F"],  
 "text_color": ["#DCE4EE", "#DCE4EE"],  
 "text_color_disabled": ["gray74", "gray60"]  
 },  
 "CTkLabel": {  
 "corner_radius": 0,  
 "fg_color": "transparent",  
 "text_color": ["gray14", "gray84"]  
 },  
 "CTkEntry": {  
 "corner_radius": 6,  
 "border_width": 2,  
 "fg_color": ["#F9F9FA", "#343638"],  
 "border_color": ["#979DA2", "#565B5E"],  
 "text_color": ["gray14", "gray84"],  
 "placeholder_text_color": ["gray52", "gray62"]  
 },  
 "CTkCheckBox": {  
 "corner_radius": 6,  
 "border_width": 3,  
 "fg_color": ["#3a7ebf", "#1f538d"],  
 "border_color": ["#3E454A", "#949A9F"],  
 "hover_color": ["#325882", "#14375e"],  
 "checkmark_color": ["#DCE4EE", "gray90"],  
 "text_color": ["gray14", "gray84"],  
 "text_color_disabled": ["gray60", "gray45"]  
 },  
 "CTkSwitch": {  
 "corner_radius": 1000,  
 "border_width": 3,  
 "button_length": 0,  
 "fg_color": ["#939BA2", "#4A4D50"],  
 "progress_color": ["#3a7ebf", "#1f538d"],  
 "button_color": ["gray36", "#D5D9DE"],  
 "button_hover_color": ["gray20", "gray100"],  
 "text_color": ["gray14", "gray84"],  
 "text_color_disabled": ["gray60", "gray45"]  
 },  
 "CTkRadioButton": {  
 "corner_radius": 1000,  
 "border_width_checked": 6,  
 "border_width_unchecked": 3,  
 "fg_color": ["#3a7ebf", "#1f538d"],  
 "border_color": ["#3E454A", "#949A9F"],  
 "hover_color": ["#325882", "#14375e"],  
 "text_color": ["gray14", "gray84"],  
 "text_color_disabled": ["gray60", "gray45"]  
 },  
 "CTkProgressBar": {  
 "corner_radius": 1000,  
 "border_width": 0,  
 "fg_color": ["#939BA2", "#4A4D50"],  
 "progress_color": ["#3a7ebf", "#1f538d"],  
 "border_color": ["gray", "gray"]  
 },  
 "CTkSlider": {  
 "corner_radius": 1000,  
 "button_corner_radius": 1000,  
 "border_width": 6,  
 "button_length": 0,  
 "fg_color": ["#939BA2", "#4A4D50"],  
 "progress_color": ["gray40", "#AAB0B5"],  
 "button_color": ["#3a7ebf", "#1f538d"],  
 "button_hover_color": ["#325882", "#14375e"]  
 },  
 "CTkOptionMenu": {  
 "corner_radius": 6,  
 "fg_color": ["#3a7ebf", "#1f538d"],  
 "button_color": ["#325882", "#14375e"],  
 "button_hover_color": ["#234567", "#1e2c40"],  
 "text_color": ["#DCE4EE", "#DCE4EE"],  
 "text_color_disabled": ["gray74", "gray60"]  
 },  
 "CTkComboBox": {  
 "corner_radius": 6,  
 "border_width": 2,  
 "fg_color": ["#F9F9FA", "#343638"],  
 "border_color": ["#979DA2", "#565B5E"],  
 "button_color": ["#979DA2", "#565B5E"],  
 "button_hover_color": ["#6E7174", "#7A848D"],  
 "text_color": ["gray14", "gray84"],  
 "text_color_disabled": ["gray50", "gray45"]  
 },  
 "CTkScrollbar": {  
 "corner_radius": 1000,  
 "border_spacing": 4,  
 "fg_color": "transparent",  
 "button_color": ["gray55", "gray41"],  
 "button_hover_color": ["gray40", "gray53"]  
 },  
 "CTkSegmentedButton": {  
 "corner_radius": 6,  
 "border_width": 2,  
 "fg_color": ["#979DA2", "gray29"],  
 "selected_color": ["#3a7ebf", "#1f538d"],  
 "selected_hover_color": ["#325882", "#14375e"],  
 "unselected_color": ["#979DA2", "gray29"],  
 "unselected_hover_color": ["gray70", "gray41"],  
 "text_color": ["#DCE4EE", "#DCE4EE"],
"text_color_disabled": ["gray74", "gray60"]  
 },  
 "CTkTextbox": {  
 "corner_radius": 6,  
 "border_width": 0,  
 "fg_color": ["gray100", "gray20"],  
 "border_color": ["#979DA2", "#565B5E"],  
 "text_color": ["gray14", "gray84"],  
 "scrollbar_button_color": ["gray55", "gray41"],  
 "scrollbar_button_hover_color": ["gray40", "gray53"]  
 },  
 "CTkScrollableFrame": {  
 "label_fg_color": ["gray80", "gray21"]  
 },  
 "DropdownMenu": {  
 "fg_color": ["gray90", "gray20"],  
 "hover_color": ["gray75", "gray28"],  
 "text_color": ["gray14", "gray84"]  
 },  
 "CTkFont": {  
 "macOS": {  
 "family": "SF Display",  
 "size": 13,  
 "weight": "normal"  
 },  
 "Windows": {  
 "family": "Roboto",  
 "size": 13,  
 "weight": "normal"  
 },  
 "Linux": {  
 "family": "Roboto",  
 "size": 13,  
 "weight": "normal"  
 }  
 }  
}

І це можна реалізувати у вашому скрипті так:

customtkinter.set_default_colour_theme("шлях до вашого json файлу")

Режим відображення

Режим відображення можна налаштувати на “dark” (темний), “light” (світлий) або “system” (системний).

customtkinter.set_appearance_mode("dark")

Віджети CTk

У бібліотеці Custom Tkinter є багато віджетів.
Більшість з них такі ж, як і в бібліотеці tkinter.

CTk Вікна

Існує три типи вікон CTk:

  1. CTk
  2. CTkInputDialog
  3. CTkToplevel

CTk

Клас CTk є основою будь-якої програми на CustomTkinter, він створює головне вікно програми. Під час виконання програми повинна бути лише одна інстанція цього класу з одним викликом методу .mainloop(), який запускає програму.

root = customtkinter.CTk()  
root.mainloop()

CTkInputDialog

Цей діалог допомагає користувачу ввести рядок чи число, відкриваючи інший діалог.

dialog = customtkinter.CTkInputDialog(text="Введіть число:", title="Тест")  
data = dialog.get_input()

CTkToplevel

Клас CTkToplevel використовується для створення додаткових вікон. Для вікна CTkToplevel не потрібно викликати .mainloop(), воно відкривається одразу після створення.

window = CTkToplevel(master=app) # аргумент master є необов'язковим

CTk Утиліти

Існує два типи утиліт CTk:

  1. CTkImage
  2. CTkFont

CTkImage

CTkImage — це не віджет, а контейнер для до двох об'єктів PIL Image для світлого і темного режимів.

from PIL import Image  

my_image = customtkinter.CTkImage(light_image=Image.open(""),  
 dark_image=Image.open(""))

CTkFont

В CustomTkinter є два способи встановити шрифт:

  1. Встановлення через кортеж
  2. Створення об'єкта CTkFont

Встановлення через кортеж

button = customtkinter.CTkLabel(master=app, font=("", ))

Цей шрифт не можна змінити після встановлення.

Створення об'єкта CTkFont

Кращий спосіб — це створити об'єкт CTkFont, який можна змінювати пізніше і використовувати для кількох віджетів:

button = customtkinter.CTkButton(app, font=customtkinter.CTkFont(family="", size=, ))  

button.cget("font").configure(size=new_size) # налаштування шрифта після

Ось і все на сьогодні. Дякую за увагу! Будь ласка, не соромтесь поділитись своїми зауваженнями в коментарях нижче.

Перекладено з: Make Your Python Application Look Better (Custom Tkinter)

Leave a Reply

Your email address will not be published. Required fields are marked *