Не меняется цветовая палитра у тем в Customtkinter
import customtkinter
customtkinter.set_appearance_mode("system")
customtkinter.set_default_color_theme(r"C:\violet.json")
root = customtkinter.CTk()
root.geometry("1500x800")
root.title("ctk")
Custom = customtkinter.StringVar(value="violet")
def themecustom(*args):
selected_theme = Custom.get()
if selected_theme == "violet":
customtkinter.set_default_color_theme(r"C:\violet.json")
elif selected_theme == "carrot":
customtkinter.set_default_color_theme(r"C:\coffee.json")
else:
customtkinter.set_default_color_theme(r"C:\sky.json")
ThemCustom = customtkinter.CTkOptionMenu(root, font=("Helvetica Neue", 20, "bold"),
values=["violet", "carrot", "sky"], variable=Custom)
Custom.trace_add('write', themecustom)
Ответы (1 шт):
Автор решения: Donovan
→ Ссылка
Данное решение - костыль, но если вам оно нужно срочно, то:
У нас есть часть смены тем:
import customtkinter as ctk
def themecustom(*args):
selected_theme = Custom.get()
if selected_theme == "violet":
ctk.set_default_color_theme(r"C:\violet.json")
elif selected_theme == "carrot":
ctk.set_default_color_theme(r"C:\coffee.json")
else:
ctk.set_default_color_theme(r"C:\sky.json")
# Добавляем часть с перезагрузкой окна
root.destroy()
create_main_window()
И добавляем в код функцию create_main_window()
, перенося туда создание главного окна:
def create_main_window():
global root, ThemCustom, Custom
root = ctk.CTk()
root.geometry("1500x800")
root.title("ctk")
Custom = ctk.StringVar(value="violet")
ThemCustom = ctk.CTkOptionMenu(root, font=("Helvetica Neue", 20, "bold"), values=["violet", "carrot", "sky"], variable=Custom)
ThemCustom.pack()
Custom.trace_add('write', themecustom)
root.mainloop()
create_main_window()
При смене темы окно будет моргать, но тема поменяется.