mirror of
https://github.com/TomSchimansky/CustomTkinter.git
synced 2023-08-10 21:13:13 +03:00
added different default color themes
This commit is contained in:
parent
2fa7a519ea
commit
daf64a12b4
|
@ -55,26 +55,5 @@ def get_appearance_mode():
|
||||||
return "Dark"
|
return "Dark"
|
||||||
|
|
||||||
|
|
||||||
def deactivate_threading():
|
def set_default_color_theme(color_string):
|
||||||
AppearanceModeTracker.init_listener_function(no_thread=True)
|
CTkColorManager.initialize_color_theme(color_string)
|
||||||
sys.stderr.write("WARNING (customtkinter.deactivate_threading): Automatic threaded search for a change of the " +
|
|
||||||
"system appearance mode is deativated now.\nYou have to update the appearance mode manually " +
|
|
||||||
"in your mainloop by calling customtkinter.update_appearance_mode() every time.\n")
|
|
||||||
|
|
||||||
|
|
||||||
def activate_threading():
|
|
||||||
AppearanceModeTracker.init_listener_function()
|
|
||||||
|
|
||||||
|
|
||||||
def update_appearance_mode():
|
|
||||||
if isinstance(AppearanceModeTracker.system_mode_listener, SystemAppearanceModeListenerNoThread):
|
|
||||||
AppearanceModeTracker.system_mode_listener.update()
|
|
||||||
else:
|
|
||||||
sys.stderr.write("WARNING (customtkinter.update_theme): no need to call update_appearance_mode, because " +
|
|
||||||
"customtkinter is constantly searching for a mode change in a background thread.\n")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,8 @@ class CTkButton(tkinter.Frame):
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
bg_color=None,
|
bg_color=None,
|
||||||
fg_color=CTkColorManager.MAIN,
|
fg_color="CTkColorManager",
|
||||||
hover_color=CTkColorManager.MAIN_HOVER,
|
hover_color="CTkColorManager",
|
||||||
border_color=None,
|
border_color=None,
|
||||||
border_width=0,
|
border_width=0,
|
||||||
command=None,
|
command=None,
|
||||||
|
@ -22,7 +22,7 @@ class CTkButton(tkinter.Frame):
|
||||||
height=30,
|
height=30,
|
||||||
corner_radius=8,
|
corner_radius=8,
|
||||||
text_font=None,
|
text_font=None,
|
||||||
text_color=CTkColorManager.TEXT,
|
text_color="CTkColorManager",
|
||||||
text="CTkButton",
|
text="CTkButton",
|
||||||
hover=True,
|
hover=True,
|
||||||
image=None,
|
image=None,
|
||||||
|
@ -58,8 +58,8 @@ class CTkButton(tkinter.Frame):
|
||||||
self.configure_basic_grid()
|
self.configure_basic_grid()
|
||||||
|
|
||||||
self.bg_color = self.detect_color_of_master() if bg_color is None else bg_color
|
self.bg_color = self.detect_color_of_master() if bg_color is None else bg_color
|
||||||
self.fg_color = fg_color
|
self.fg_color = CTkColorManager.MAIN if fg_color == "CTkColorManager" else fg_color
|
||||||
self.hover_color = self.fg_color if hover_color is None else hover_color
|
self.hover_color = CTkColorManager.MAIN_HOVER if hover_color == "CTkColorManager" else hover_color
|
||||||
self.border_color = border_color
|
self.border_color = border_color
|
||||||
|
|
||||||
self.width = width
|
self.width = width
|
||||||
|
@ -80,7 +80,7 @@ class CTkButton(tkinter.Frame):
|
||||||
self.inner_corner_radius = 0
|
self.inner_corner_radius = 0
|
||||||
|
|
||||||
self.text = text
|
self.text = text
|
||||||
self.text_color = text_color
|
self.text_color = CTkColorManager.TEXT if text_color == "CTkColorManager" else text_color
|
||||||
if text_font is None:
|
if text_font is None:
|
||||||
if sys.platform == "darwin": # macOS
|
if sys.platform == "darwin": # macOS
|
||||||
self.text_font = ("Avenir", 13)
|
self.text_font = ("Avenir", 13)
|
||||||
|
@ -516,18 +516,23 @@ class CTkButton(tkinter.Frame):
|
||||||
|
|
||||||
def on_enter(self, event=0):
|
def on_enter(self, event=0):
|
||||||
if self.hover is True:
|
if self.hover is True:
|
||||||
|
if self.hover_color is None:
|
||||||
|
inner_parts_color = self.fg_color
|
||||||
|
else:
|
||||||
|
inner_parts_color = self.hover_color
|
||||||
|
|
||||||
# set color of inner button parts to hover color
|
# set color of inner button parts to hover color
|
||||||
self.canvas.itemconfig("inner_parts",
|
self.canvas.itemconfig("inner_parts",
|
||||||
outline=CTkColorManager.single_color(self.hover_color, self.appearance_mode),
|
outline=CTkColorManager.single_color(inner_parts_color, self.appearance_mode),
|
||||||
fill=CTkColorManager.single_color(self.hover_color, self.appearance_mode))
|
fill=CTkColorManager.single_color(inner_parts_color, self.appearance_mode))
|
||||||
|
|
||||||
# set text_label bg color to button hover color
|
# set text_label bg color to button hover color
|
||||||
if self.text_label is not None:
|
if self.text_label is not None:
|
||||||
self.text_label.configure(bg=CTkColorManager.single_color(self.hover_color, self.appearance_mode))
|
self.text_label.configure(bg=CTkColorManager.single_color(inner_parts_color, self.appearance_mode))
|
||||||
|
|
||||||
# set image_label bg color to button hover color
|
# set image_label bg color to button hover color
|
||||||
if self.image_label is not None:
|
if self.image_label is not None:
|
||||||
self.image_label.configure(bg=CTkColorManager.single_color(self.hover_color, self.appearance_mode))
|
self.image_label.configure(bg=CTkColorManager.single_color(inner_parts_color, self.appearance_mode))
|
||||||
|
|
||||||
def on_leave(self, event=0):
|
def on_leave(self, event=0):
|
||||||
if self.hover is True:
|
if self.hover is True:
|
||||||
|
|
|
@ -12,15 +12,15 @@ class CTkCheckBox(tkinter.Frame):
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
bg_color=None,
|
bg_color=None,
|
||||||
fg_color=CTkColorManager.MAIN,
|
fg_color="CTkColorManager",
|
||||||
hover_color=CTkColorManager.MAIN_HOVER,
|
hover_color="CTkColorManager",
|
||||||
border_color=CTkColorManager.CHECKBOX_LINES,
|
border_color="CTkColorManager",
|
||||||
border_width=3,
|
border_width=3,
|
||||||
width=25,
|
width=25,
|
||||||
height=25,
|
height=25,
|
||||||
corner_radius=4,
|
corner_radius=4,
|
||||||
text_font=None,
|
text_font=None,
|
||||||
text_color=CTkColorManager.TEXT,
|
text_color="CTkColorManager",
|
||||||
text="CTkCheckBox",
|
text="CTkCheckBox",
|
||||||
hover=True,
|
hover=True,
|
||||||
command=None,
|
command=None,
|
||||||
|
@ -53,9 +53,9 @@ class CTkCheckBox(tkinter.Frame):
|
||||||
self.appearance_mode = AppearanceModeTracker.get_mode() # 0: "Light" 1: "Dark"
|
self.appearance_mode = AppearanceModeTracker.get_mode() # 0: "Light" 1: "Dark"
|
||||||
|
|
||||||
self.bg_color = self.detect_color_of_master() if bg_color is None else bg_color
|
self.bg_color = self.detect_color_of_master() if bg_color is None else bg_color
|
||||||
self.fg_color = CTkColorManager.MAIN if fg_color is None else fg_color
|
self.fg_color = CTkColorManager.MAIN if fg_color == "CTkColorManager" else fg_color
|
||||||
self.hover_color = CTkColorManager.MAIN_HOVER if hover_color is None else hover_color
|
self.hover_color = CTkColorManager.MAIN_HOVER if hover_color == "CTkColorManager" else hover_color
|
||||||
self.border_color = border_color
|
self.border_color = CTkColorManager.CHECKBOX_LINES if border_color == "CTkColorManager" else border_color
|
||||||
|
|
||||||
self.width = width
|
self.width = width
|
||||||
self.height = height
|
self.height = height
|
||||||
|
@ -74,7 +74,7 @@ class CTkCheckBox(tkinter.Frame):
|
||||||
self.inner_corner_radius = 0
|
self.inner_corner_radius = 0
|
||||||
|
|
||||||
self.text = text
|
self.text = text
|
||||||
self.text_color = text_color
|
self.text_color = CTkColorManager.TEXT if text_color == "CTkColorManager" else text_color
|
||||||
if text_font is None:
|
if text_font is None:
|
||||||
if sys.platform == "darwin": # macOS
|
if sys.platform == "darwin": # macOS
|
||||||
self.text_font = ("Avenir", 13)
|
self.text_font = ("Avenir", 13)
|
||||||
|
|
|
@ -3,18 +3,68 @@ import sys
|
||||||
|
|
||||||
class CTkColorManager:
|
class CTkColorManager:
|
||||||
|
|
||||||
WINDOW_BG = ("#ECECEC", "#323232") # macOS standard light and dark window bg colors
|
WINDOW_BG = None
|
||||||
MAIN = ("#1C94CF", "#1C94CF")
|
MAIN = None
|
||||||
MAIN_HOVER = ("#5FB4DD", "#5FB4DD")
|
MAIN_HOVER = None
|
||||||
ENTRY = ("white", "#222222")
|
ENTRY = None
|
||||||
TEXT = ("black", "white")
|
TEXT = None
|
||||||
SLIDER_BG = ("#6B6B6B", "#222222")
|
LABEL_BG = None
|
||||||
PROGRESS_BG = ("#6B6B6B", "#222222")
|
SLIDER_BG = None
|
||||||
FRAME = ("#D4D5D6", "#3F3F3F")
|
SLIDER_PROGRESS = None
|
||||||
FRAME_2 = ("#BFBEC1", "#505050")
|
PROGRESS_BG = None
|
||||||
CHECKBOX_LINES = ("black", "#ededed")
|
FRAME = None
|
||||||
|
FRAME_2 = None
|
||||||
|
CHECKBOX_LINES = None
|
||||||
|
DARKEN_COLOR_FACTOR = None
|
||||||
|
|
||||||
DARKEN_COLOR_FACTOR = 0.8 # used to generate color for disabled button
|
@classmethod
|
||||||
|
def initialize_color_theme(cls, theme_name):
|
||||||
|
print("set theme", theme_name)
|
||||||
|
|
||||||
|
if theme_name.lower() == "blue":
|
||||||
|
cls.WINDOW_BG = ("#ECECEC", "#323232") # macOS standard light and dark window bg colors
|
||||||
|
cls.MAIN = ("#1C94CF", "#1C94CF")
|
||||||
|
cls.MAIN_HOVER = ("#5FB4DD", "#5FB4DD")
|
||||||
|
cls.ENTRY = ("white", "#222222")
|
||||||
|
cls.TEXT = ("black", "white")
|
||||||
|
cls.LABEL_BG = ("white", "#626061")
|
||||||
|
cls.SLIDER_BG = ("#6B6B6B", "#222222")
|
||||||
|
cls.SLIDER_PROGRESS = ("#A5A6A5", "#555555")
|
||||||
|
cls.PROGRESS_BG = ("#6B6B6B", "#222222")
|
||||||
|
cls.FRAME = ("#D4D5D6", "#3F3F3F")
|
||||||
|
cls.FRAME_2 = ("#BFBEC1", "#505050")
|
||||||
|
cls.CHECKBOX_LINES = ("black", "#ededed")
|
||||||
|
cls.DARKEN_COLOR_FACTOR = 0.8 # used to generate color for disabled button
|
||||||
|
|
||||||
|
elif theme_name.lower() == "green":
|
||||||
|
cls.WINDOW_BG = ("#ECECEC", "#323232") # macOS standard light and dark window bg colors
|
||||||
|
cls.MAIN = ("#29B57E", "#29B57E")
|
||||||
|
cls.MAIN_HOVER = ("#6ACBA5", "#6ACBA5")
|
||||||
|
cls.ENTRY = ("#656565", "#222223")
|
||||||
|
cls.TEXT = ("black", "white")
|
||||||
|
cls.LABEL_BG = ("white", "#626061")
|
||||||
|
cls.SLIDER_BG = ("#636363", "#0D1321")
|
||||||
|
cls.SLIDER_PROGRESS = ("white", "#727578")
|
||||||
|
cls.PROGRESS_BG = ("#636363", "#0D1321")
|
||||||
|
cls.FRAME = ("#D4D5D6", "#3F3F3F")
|
||||||
|
cls.FRAME_2 = ("#BFBEC1", "#505050")
|
||||||
|
cls.CHECKBOX_LINES = ("#414141", "#EDEDED")
|
||||||
|
cls.DARKEN_COLOR_FACTOR = 0.8 # used to generate color for disabled button
|
||||||
|
|
||||||
|
elif theme_name.lower() == "dark-blue":
|
||||||
|
cls.WINDOW_BG = ("#F1F1F1", "#192026") # macOS standard light and dark window bg colors
|
||||||
|
cls.MAIN = ("#608BD5", "#395E9C")
|
||||||
|
cls.MAIN_HOVER = ("#A4BDE6", "#748BB3")
|
||||||
|
cls.ENTRY = ("#FCFCFC", "#111116")
|
||||||
|
cls.TEXT = ("black", "white")
|
||||||
|
cls.LABEL_BG = ("white", "#444444")
|
||||||
|
cls.SLIDER_BG = ("#444444", "#444444")
|
||||||
|
cls.SLIDER_PROGRESS = ("white", "#AAAAAA")
|
||||||
|
cls.PROGRESS_BG = ("#636363", "#0D1321")
|
||||||
|
cls.FRAME = ("#DADADA", "#2B2C2E")
|
||||||
|
cls.FRAME_2 = ("#C4C4C4", "#383838")
|
||||||
|
cls.CHECKBOX_LINES = ("#313131", "white")
|
||||||
|
cls.DARKEN_COLOR_FACTOR = 0.8 # used to generate color for disabled button
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def single_color(color, appearance_mode: int) -> str:
|
def single_color(color, appearance_mode: int) -> str:
|
||||||
|
@ -48,17 +98,9 @@ class CTkColorManager:
|
||||||
return hex_color
|
return hex_color
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def set_theme_color(cls, hex_color: str, hex_color_hover: str):
|
def set_main_color(cls, main_color, main_color_hover):
|
||||||
cls.MAIN = hex_color
|
cls.MAIN = main_color
|
||||||
cls.MAIN_HOVER = hex_color_hover
|
cls.MAIN_HOVER = main_color_hover
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def set_theme(cls, main_color: str):
|
|
||||||
if main_color.lower() == "green":
|
|
||||||
cls.set_theme_color("#2EDEA4", "#82FCD4")
|
|
||||||
|
|
||||||
elif main_color.lower() == "blue":
|
CTkColorManager.initialize_color_theme("blue")
|
||||||
cls.set_theme_color("#1C94CF", "#5FB4DD")
|
|
||||||
|
|
||||||
else:
|
|
||||||
sys.stderr.write("WARNING (CTkColorManager): No such color theme available: {}\n".format(main_color))
|
|
||||||
|
|
|
@ -12,8 +12,8 @@ class CTkDialog:
|
||||||
master=None,
|
master=None,
|
||||||
title="CTkDialog",
|
title="CTkDialog",
|
||||||
text="CTkDialog",
|
text="CTkDialog",
|
||||||
fg_color=CTkColorManager.MAIN,
|
fg_color="CTkColorManager",
|
||||||
hover_color=CTkColorManager.MAIN_HOVER):
|
hover_color="CTkColorManager"):
|
||||||
self.master = master
|
self.master = master
|
||||||
|
|
||||||
self.user_input = None
|
self.user_input = None
|
||||||
|
@ -21,8 +21,8 @@ class CTkDialog:
|
||||||
|
|
||||||
self.height = len(text.split("\n"))*20 + 150
|
self.height = len(text.split("\n"))*20 + 150
|
||||||
|
|
||||||
self.fg_color = CTkColorManager.MAIN if fg_color is None else fg_color
|
self.fg_color = CTkColorManager.MAIN if fg_color == "CTkColorManager" else fg_color
|
||||||
self.hover_color = CTkColorManager.MAIN_HOVER if hover_color is None else hover_color
|
self.hover_color = CTkColorManager.MAIN_HOVER if hover_color == "CTkColorManager" else hover_color
|
||||||
|
|
||||||
self.top = tkinter.Toplevel()
|
self.top = tkinter.Toplevel()
|
||||||
self.top.geometry(f"280x{self.height}")
|
self.top.geometry(f"280x{self.height}")
|
||||||
|
|
|
@ -11,8 +11,8 @@ class CTkEntry(tkinter.Frame):
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
master=None,
|
master=None,
|
||||||
bg_color=None,
|
bg_color=None,
|
||||||
fg_color=CTkColorManager.ENTRY,
|
fg_color="CTkColorManager",
|
||||||
text_color=CTkColorManager.TEXT,
|
text_color="CTkColorManager",
|
||||||
corner_radius=8,
|
corner_radius=8,
|
||||||
width=120,
|
width=120,
|
||||||
height=30,
|
height=30,
|
||||||
|
@ -45,8 +45,8 @@ class CTkEntry(tkinter.Frame):
|
||||||
self.appearance_mode = AppearanceModeTracker.get_mode() # 0: "Light" 1: "Dark"
|
self.appearance_mode = AppearanceModeTracker.get_mode() # 0: "Light" 1: "Dark"
|
||||||
|
|
||||||
self.bg_color = self.detect_color_of_master() if bg_color is None else bg_color
|
self.bg_color = self.detect_color_of_master() if bg_color is None else bg_color
|
||||||
self.fg_color = self.bg_color if fg_color is None else fg_color
|
self.fg_color = CTkColorManager.ENTRY if fg_color == "CTkColorManager" else fg_color
|
||||||
self.text_color = text_color
|
self.text_color = CTkColorManager.TEXT if text_color == "CTkColorManager" else text_color
|
||||||
|
|
||||||
self.width = width
|
self.width = width
|
||||||
self.height = height
|
self.height = height
|
||||||
|
|
|
@ -9,7 +9,7 @@ from .customtkinter_color_manager import CTkColorManager
|
||||||
class CTkFrame(tkinter.Frame):
|
class CTkFrame(tkinter.Frame):
|
||||||
def __init__(self, *args,
|
def __init__(self, *args,
|
||||||
bg_color=None,
|
bg_color=None,
|
||||||
fg_color=None,
|
fg_color="CTkColorManager",
|
||||||
corner_radius=10,
|
corner_radius=10,
|
||||||
width=200,
|
width=200,
|
||||||
height=200,
|
height=200,
|
||||||
|
@ -42,7 +42,7 @@ class CTkFrame(tkinter.Frame):
|
||||||
|
|
||||||
self.bg_color = self.detect_color_of_master() if bg_color is None else bg_color
|
self.bg_color = self.detect_color_of_master() if bg_color is None else bg_color
|
||||||
|
|
||||||
if fg_color is None:
|
if fg_color == "CTkColorManager":
|
||||||
if isinstance(self.master, CTkFrame):
|
if isinstance(self.master, CTkFrame):
|
||||||
if self.master.fg_color == CTkColorManager.FRAME:
|
if self.master.fg_color == CTkColorManager.FRAME:
|
||||||
self.fg_color = CTkColorManager.FRAME_2
|
self.fg_color = CTkColorManager.FRAME_2
|
||||||
|
|
|
@ -11,8 +11,8 @@ class CTkLabel(tkinter.Frame):
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
master=None,
|
master=None,
|
||||||
bg_color=None,
|
bg_color=None,
|
||||||
fg_color=None,
|
fg_color="CTkColorManager",
|
||||||
text_color=CTkColorManager.TEXT,
|
text_color="CTkColorManager",
|
||||||
corner_radius=8,
|
corner_radius=8,
|
||||||
width=120,
|
width=120,
|
||||||
height=25,
|
height=25,
|
||||||
|
@ -47,8 +47,8 @@ class CTkLabel(tkinter.Frame):
|
||||||
self.appearance_mode = AppearanceModeTracker.get_mode() # 0: "Light" 1: "Dark"
|
self.appearance_mode = AppearanceModeTracker.get_mode() # 0: "Light" 1: "Dark"
|
||||||
|
|
||||||
self.bg_color = self.detect_color_of_master() if bg_color is None else bg_color
|
self.bg_color = self.detect_color_of_master() if bg_color is None else bg_color
|
||||||
self.fg_color = self.bg_color if fg_color is None else fg_color
|
self.fg_color = CTkColorManager.LABEL_BG if fg_color == "CTkColorManager" else fg_color
|
||||||
self.text_color = text_color
|
self.text_color = CTkColorManager.TEXT if text_color == "CTkColorManager" else text_color
|
||||||
|
|
||||||
self.width = width
|
self.width = width
|
||||||
self.height = height
|
self.height = height
|
||||||
|
@ -153,21 +153,26 @@ class CTkLabel(tkinter.Frame):
|
||||||
else:
|
else:
|
||||||
self.canvas.configure(bg=self.bg_color)
|
self.canvas.configure(bg=self.bg_color)
|
||||||
|
|
||||||
|
if self.fg_color is None:
|
||||||
|
new_fg_color = self.bg_color
|
||||||
|
else:
|
||||||
|
new_fg_color = self.fg_color
|
||||||
|
|
||||||
for part in self.fg_parts:
|
for part in self.fg_parts:
|
||||||
if type(self.fg_color) == tuple:
|
if type(new_fg_color) == tuple:
|
||||||
self.canvas.itemconfig(part, fill=self.fg_color[self.appearance_mode], width=0)
|
self.canvas.itemconfig(part, fill=new_fg_color[self.appearance_mode], width=0)
|
||||||
else:
|
else:
|
||||||
self.canvas.itemconfig(part, fill=self.fg_color, width=0)
|
self.canvas.itemconfig(part, fill=new_fg_color, width=0)
|
||||||
|
|
||||||
if type(self.text_color) == tuple:
|
if type(self.text_color) == tuple:
|
||||||
self.text_label.configure(fg=self.text_color[self.appearance_mode])
|
self.text_label.configure(fg=self.text_color[self.appearance_mode])
|
||||||
else:
|
else:
|
||||||
self.text_label.configure(fg=self.text_color)
|
self.text_label.configure(fg=self.text_color)
|
||||||
|
|
||||||
if type(self.fg_color) == tuple:
|
if type(new_fg_color) == tuple:
|
||||||
self.text_label.configure(bg=self.fg_color[self.appearance_mode])
|
self.text_label.configure(bg=new_fg_color[self.appearance_mode])
|
||||||
else:
|
else:
|
||||||
self.text_label.configure(bg=self.fg_color)
|
self.text_label.configure(bg=new_fg_color)
|
||||||
|
|
||||||
def config(self, *args, **kwargs):
|
def config(self, *args, **kwargs):
|
||||||
self.configure(*args, **kwargs)
|
self.configure(*args, **kwargs)
|
||||||
|
|
|
@ -12,9 +12,9 @@ class CTkProgressBar(tkinter.Frame):
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
bg_color=None,
|
bg_color=None,
|
||||||
border_color=CTkColorManager.PROGRESS_BG,
|
border_color="CTkColorManager",
|
||||||
fg_color=CTkColorManager.PROGRESS_BG,
|
fg_color="CTkColorManager",
|
||||||
progress_color=CTkColorManager.MAIN,
|
progress_color="CTkColorManager",
|
||||||
width=160,
|
width=160,
|
||||||
height=10,
|
height=10,
|
||||||
border_width=0,
|
border_width=0,
|
||||||
|
@ -46,9 +46,9 @@ class CTkProgressBar(tkinter.Frame):
|
||||||
self.appearance_mode = AppearanceModeTracker.get_mode() # 0: "Light" 1: "Dark"
|
self.appearance_mode = AppearanceModeTracker.get_mode() # 0: "Light" 1: "Dark"
|
||||||
|
|
||||||
self.bg_color = self.detect_color_of_master() if bg_color is None else bg_color
|
self.bg_color = self.detect_color_of_master() if bg_color is None else bg_color
|
||||||
self.border_color = border_color
|
self.border_color = CTkColorManager.PROGRESS_BG if border_color == "CTkColorManager" else border_color
|
||||||
self.fg_color = fg_color
|
self.fg_color = CTkColorManager.PROGRESS_BG if fg_color == "CTkColorManager" else fg_color
|
||||||
self.progress_color = CTkColorManager.MAIN if progress_color is None else progress_color
|
self.progress_color = CTkColorManager.MAIN if progress_color == "CTkColorManager" else progress_color
|
||||||
|
|
||||||
self.width = width
|
self.width = width
|
||||||
self.height = self.calc_optimal_height(height)
|
self.height = self.calc_optimal_height(height)
|
||||||
|
|
|
@ -13,10 +13,10 @@ class CTkSlider(tkinter.Frame):
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
bg_color=None,
|
bg_color=None,
|
||||||
border_color=None,
|
border_color=None,
|
||||||
fg_color=CTkColorManager.SLIDER_BG,
|
fg_color="CTkColorManager",
|
||||||
progress_color=None,
|
progress_color="CTkColorManager",
|
||||||
button_color=CTkColorManager.MAIN,
|
button_color="CTkColorManager",
|
||||||
button_hover_color=CTkColorManager.MAIN_HOVER,
|
button_hover_color="CTkColorManager",
|
||||||
from_=0,
|
from_=0,
|
||||||
to=1,
|
to=1,
|
||||||
number_of_steps=None,
|
number_of_steps=None,
|
||||||
|
@ -53,10 +53,10 @@ class CTkSlider(tkinter.Frame):
|
||||||
|
|
||||||
self.bg_color = self.detect_color_of_master() if bg_color is None else bg_color
|
self.bg_color = self.detect_color_of_master() if bg_color is None else bg_color
|
||||||
self.border_color = border_color
|
self.border_color = border_color
|
||||||
self.fg_color = fg_color
|
self.fg_color = CTkColorManager.SLIDER_BG if fg_color == "CTkColorManager" else fg_color
|
||||||
self.progress_color = progress_color
|
self.progress_color = CTkColorManager.SLIDER_PROGRESS if progress_color == "CTkColorManager" else progress_color
|
||||||
self.button_color = self.bg_color if button_color is None else button_color
|
self.button_color = CTkColorManager.MAIN if button_color == "CTkColorManager" else button_color
|
||||||
self.button_hover_color = self.bg_color if button_hover_color is None else button_hover_color
|
self.button_hover_color = CTkColorManager.MAIN if button_hover_color == "CTkColorManager" else button_hover_color
|
||||||
|
|
||||||
self.width = width
|
self.width = width
|
||||||
self.height = self.calc_optimal_height(height)
|
self.height = self.calc_optimal_height(height)
|
||||||
|
|
|
@ -10,13 +10,14 @@ from .customtkinter_color_manager import CTkColorManager
|
||||||
|
|
||||||
class CTk(tkinter.Tk):
|
class CTk(tkinter.Tk):
|
||||||
def __init__(self, *args,
|
def __init__(self, *args,
|
||||||
fg_color=CTkColorManager.WINDOW_BG,
|
fg_color="CTkColorManager",
|
||||||
**kwargs):
|
**kwargs):
|
||||||
|
|
||||||
self.enable_macos_dark_title_bar()
|
self.enable_macos_dark_title_bar()
|
||||||
self.appearance_mode = AppearanceModeTracker.get_mode() # 0: "Light" 1: "Dark"
|
self.appearance_mode = AppearanceModeTracker.get_mode() # 0: "Light" 1: "Dark"
|
||||||
|
|
||||||
self.fg_color = fg_color
|
self.fg_color = CTkColorManager.WINDOW_BG if fg_color == "CTkColorManager" else fg_color
|
||||||
|
|
||||||
if "bg" in kwargs:
|
if "bg" in kwargs:
|
||||||
self.fg_color = kwargs["bg"]
|
self.fg_color = kwargs["bg"]
|
||||||
del kwargs["bg"]
|
del kwargs["bg"]
|
||||||
|
|
|
@ -4,6 +4,7 @@ import customtkinter
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
customtkinter.set_appearance_mode("System") # Other: "Light", "Dark"
|
customtkinter.set_appearance_mode("System") # Other: "Light", "Dark"
|
||||||
|
customtkinter.set_default_color_theme("dark-blue") # Themes: "blue" (standard), "green", "dark-blue"
|
||||||
|
|
||||||
|
|
||||||
class App(customtkinter.CTk):
|
class App(customtkinter.CTk):
|
||||||
|
@ -114,13 +115,13 @@ class App(customtkinter.CTk):
|
||||||
width=160,
|
width=160,
|
||||||
height=16,
|
height=16,
|
||||||
border_width=5,
|
border_width=5,
|
||||||
progress_color=("gray65", "gray40"),
|
|
||||||
command=self.progressbar.set)
|
command=self.progressbar.set)
|
||||||
self.slider_2.place(x=20, rely=0.7, anchor=tkinter.W)
|
self.slider_2.place(x=20, rely=0.7, anchor=tkinter.W)
|
||||||
self.slider_2.set(0.7)
|
self.slider_2.set(0.7)
|
||||||
|
|
||||||
self.label_info_2 = customtkinter.CTkLabel(master=self.frame_right,
|
self.label_info_2 = customtkinter.CTkLabel(master=self.frame_right,
|
||||||
text="CTkLabel: Lorem ipsum",
|
text="CTkLabel: Lorem ipsum",
|
||||||
|
fg_color=None,
|
||||||
width=180,
|
width=180,
|
||||||
height=20,
|
height=20,
|
||||||
justify=tkinter.CENTER)
|
justify=tkinter.CENTER)
|
||||||
|
|
|
@ -131,6 +131,7 @@ class App(customtkinter.CTk):
|
||||||
|
|
||||||
self.label_info_2 = customtkinter.CTkLabel(master=self.frame_right,
|
self.label_info_2 = customtkinter.CTkLabel(master=self.frame_right,
|
||||||
text="CTkLabel: Lorem ipsum",
|
text="CTkLabel: Lorem ipsum",
|
||||||
|
fg_color=None,
|
||||||
width=180,
|
width=180,
|
||||||
height=20,
|
height=20,
|
||||||
justify=tkinter.CENTER)
|
justify=tkinter.CENTER)
|
||||||
|
|
|
@ -5,6 +5,7 @@ from PIL import Image, ImageTk
|
||||||
import os
|
import os
|
||||||
|
|
||||||
customtkinter.set_appearance_mode("Dark") # Other: "Light", "System"
|
customtkinter.set_appearance_mode("Dark") # Other: "Light", "System"
|
||||||
|
customtkinter.set_default_color_theme("blue") # Themes: "blue" (standard), "green", "dark-blue"
|
||||||
|
|
||||||
PATH = os.path.dirname(os.path.realpath(__file__))
|
PATH = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,13 @@ import time
|
||||||
import tkinter
|
import tkinter
|
||||||
import customtkinter # <- import the CustomTkinter module
|
import customtkinter # <- import the CustomTkinter module
|
||||||
|
|
||||||
|
customtkinter.set_appearance_mode("System") # Other: "Dark", "Light"
|
||||||
|
customtkinter.set_default_color_theme("blue") # Themes: "blue" (standard), "green", "dark-blue"
|
||||||
|
|
||||||
root_tk = customtkinter.CTk() # create CTk window like you do with the Tk window (you can also use normal tkinter.Tk window)
|
root_tk = customtkinter.CTk() # create CTk window like you do with the Tk window (you can also use normal tkinter.Tk window)
|
||||||
root_tk.geometry("400x300")
|
root_tk.geometry("400x300")
|
||||||
root_tk.title("CustomTkinter Test")
|
root_tk.title("CustomTkinter Test")
|
||||||
|
|
||||||
customtkinter.set_appearance_mode("System") # Other: "Dark", "Light"
|
|
||||||
|
|
||||||
|
|
||||||
def button_function():
|
def button_function():
|
||||||
print("Button click")
|
print("Button click")
|
||||||
|
@ -34,9 +35,9 @@ button_1 = customtkinter.CTkButton(master=frame_1, corner_radius=10, command=but
|
||||||
button_1.place(relx=0.5, rely=0.4, anchor=tkinter.CENTER)
|
button_1.place(relx=0.5, rely=0.4, anchor=tkinter.CENTER)
|
||||||
# button_1.configure(state="disabled")
|
# button_1.configure(state="disabled")
|
||||||
|
|
||||||
slider_1 = customtkinter.CTkSlider(master=frame_1, command=slider_function, from_=0, to=1, progress_color="gray20")
|
slider_1 = customtkinter.CTkSlider(master=frame_1, command=slider_function, from_=0, to=1)
|
||||||
slider_1.place(relx=0.5, rely=0.55, anchor=tkinter.CENTER)
|
slider_1.place(relx=0.5, rely=0.55, anchor=tkinter.CENTER)
|
||||||
slider_1.set(1.5)
|
slider_1.set(0.5)
|
||||||
|
|
||||||
entry_1 = customtkinter.CTkEntry(master=frame_1)
|
entry_1 = customtkinter.CTkEntry(master=frame_1)
|
||||||
entry_1.place(relx=0.5, rely=0.75, anchor=tkinter.CENTER)
|
entry_1.place(relx=0.5, rely=0.75, anchor=tkinter.CENTER)
|
||||||
|
|
|
@ -6,6 +6,7 @@ import os
|
||||||
PATH = os.path.dirname(os.path.realpath(__file__))
|
PATH = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
|
||||||
customtkinter.set_appearance_mode("System") # Other: "Dark", "Light"
|
customtkinter.set_appearance_mode("System") # Other: "Dark", "Light"
|
||||||
|
customtkinter.set_default_color_theme("blue") # Themes: "blue" (standard), "green", "dark-blue"
|
||||||
|
|
||||||
root_tk = customtkinter.CTk() # create CTk window like you do with the Tk window (you can also use normal tkinter.Tk window)
|
root_tk = customtkinter.CTk() # create CTk window like you do with the Tk window (you can also use normal tkinter.Tk window)
|
||||||
root_tk.geometry("400x400")
|
root_tk.geometry("400x400")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user