readme update for CTk class and bug fix for .destroy() for all widgets

This commit is contained in:
Tom Schimansky
2022-01-01 22:16:06 +01:00
parent 063c1f8b6a
commit af73c9ad5f
12 changed files with 90 additions and 17 deletions

View File

@@ -1,4 +1,4 @@
__version__ = "1.5"
__version__ = "1.6"
from .customtkinter_button import CTkButton
from .customtkinter_slider import CTkSlider

View File

@@ -119,6 +119,10 @@ class AppearanceModeTracker():
def add(cls, callback):
cls.callback_list.append(callback)
@classmethod
def remove(cls, callback):
cls.callback_list.remove(callback)
@classmethod
def get_mode(cls):
return cls.appearance_mode
@@ -141,10 +145,19 @@ class AppearanceModeTracker():
if cls.appearance_mode == 0:
for callback in cls.callback_list:
callback("Light")
try:
callback("Light")
except Exception:
print("error callback")
continue
elif cls.appearance_mode == 1:
for callback in cls.callback_list:
callback("Dark")
try:
callback("Dark")
except Exception:
print("error callback")
continue
AppearanceModeTracker.init_listener_function()

View File

@@ -101,6 +101,10 @@ class CTkButton(tkinter.Frame):
self.bind('<Configure>', self.update_dimensions)
self.draw()
def destroy(self):
AppearanceModeTracker.remove(self.set_appearance_mode)
super().destroy()
def configure_basic_grid(self):
# Configuration of a basic grid (2x2) in which all elements of CTkButtons are centered on one row and one column
self.grid_rowconfigure(0, weight=1)

View File

@@ -91,6 +91,10 @@ class CTkCheckBox(tkinter.Frame):
self.draw()
def destroy(self):
AppearanceModeTracker.remove(self.set_appearance_mode)
super().destroy()
def detect_color_of_master(self):
if isinstance(self.master, CTkFrame):
return self.master.fg_color

View File

@@ -54,6 +54,10 @@ class CTkEntry(tkinter.Frame):
self.draw()
def destroy(self):
AppearanceModeTracker.remove(self.change_appearance_mode)
super().destroy()
def detect_color_of_master(self):
if isinstance(self.master, CTkFrame):
return self.master.fg_color

View File

@@ -58,6 +58,10 @@ class CTkFrame(tkinter.Frame):
self.draw()
def destroy(self):
AppearanceModeTracker.remove(self.change_appearance_mode)
super().destroy()
def detect_color_of_master(self):
if isinstance(self.master, CTkFrame):
return self.master.fg_color

View File

@@ -69,6 +69,10 @@ class CTkLabel(tkinter.Frame):
self.draw()
def destroy(self):
AppearanceModeTracker.remove(self.change_appearance_mode)
super().destroy()
def detect_color_of_master(self):
if isinstance(self.master, CTkFrame):
return self.master.fg_color

View File

@@ -46,6 +46,10 @@ class CTkProgressBar(tkinter.Frame):
# set progress
self.set(self.value)
def destroy(self):
AppearanceModeTracker.remove(self.change_appearance_mode)
super().destroy()
def detect_color_of_master(self):
if isinstance(self.master, CTkFrame):
return self.master.fg_color

View File

@@ -64,6 +64,10 @@ class CTkSlider(tkinter.Frame):
self.draw()
def destroy(self):
AppearanceModeTracker.remove(self.change_appearance_mode)
super().destroy()
def detect_color_of_master(self):
if isinstance(self.master, CTkFrame):
return self.master.fg_color

View File

@@ -30,6 +30,7 @@ class CTk(tkinter.Tk):
super().configure(bg=CTkColorManager.single_color(self.bg_color, self.appearance_mode))
def destroy(self):
AppearanceModeTracker.remove(self.set_appearance_mode)
self.disable_macos_dark_title_bar()
super().destroy()
@@ -65,6 +66,4 @@ class CTk(tkinter.Tk):
elif mode_string.lower() == "light":
self.appearance_mode = 0
print("set",self.bg_color)
super().configure(bg=CTkColorManager.single_color(self.bg_color, self.appearance_mode))