mirror of
https://github.com/TomSchimansky/CustomTkinter.git
synced 2023-08-10 21:13:13 +03:00
new detect_color_of_master function on all widgets
This commit is contained in:
@@ -149,27 +149,19 @@ class CTkButton(tkinter.Frame):
|
||||
if isinstance(self.master, CTkFrame): # master is CTkFrame
|
||||
return self.master.fg_color
|
||||
|
||||
elif isinstance(self.master, ttk.Frame): # master is ttk widget
|
||||
elif isinstance(self.master, (ttk.Frame, ttk.LabelFrame, ttk.Notebook)): # master is ttk widget
|
||||
print("button on", self.master.winfo_class())
|
||||
try:
|
||||
ttk_style = ttk.Style()
|
||||
return ttk_style.lookup(self.master.winfo_class(), 'background')
|
||||
except Exception:
|
||||
return "#000000"
|
||||
|
||||
elif isinstance(self.master, ttk.LabelFrame):
|
||||
print("button on", self.master.winfo_class())
|
||||
try:
|
||||
ttk_style = ttk.Style()
|
||||
return ttk_style.lookup(self.master.winfo_class(), 'foreground')
|
||||
except Exception:
|
||||
return "#000000"
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
else: # master is normal tkinter widget
|
||||
try:
|
||||
return self.master.cget("bg") # try to get bg color by .cget() method
|
||||
except Exception:
|
||||
return "#000000"
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
def draw(self, no_color_updates=False):
|
||||
requires_recoloring = self.draw_engine.draw_rounded_rect_with_border(self.width, self.height, self.corner_radius, self.border_width)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import tkinter
|
||||
import tkinter.ttk as ttk
|
||||
import sys
|
||||
|
||||
from customtkinter.customtkinter_tk import CTk
|
||||
@@ -140,10 +141,24 @@ class CTkCheckBox(tkinter.Frame):
|
||||
super().destroy()
|
||||
|
||||
def detect_color_of_master(self):
|
||||
if isinstance(self.master, CTkFrame):
|
||||
""" detect color of self.master widget to set correct bg_color """
|
||||
|
||||
if isinstance(self.master, CTkFrame): # master is CTkFrame
|
||||
return self.master.fg_color
|
||||
else:
|
||||
return self.master.cget("bg")
|
||||
|
||||
elif isinstance(self.master, (ttk.Frame, ttk.LabelFrame, ttk.Notebook)): # master is ttk widget
|
||||
print("button on", self.master.winfo_class())
|
||||
try:
|
||||
ttk_style = ttk.Style()
|
||||
return ttk_style.lookup(self.master.winfo_class(), 'background')
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
else: # master is normal tkinter widget
|
||||
try:
|
||||
return self.master.cget("bg") # try to get bg color by .cget() method
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
def draw(self):
|
||||
requires_recoloring = self.draw_engine.draw_rounded_rect_with_border(self.width, self.height, self.corner_radius, self.border_width)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import tkinter
|
||||
import tkinter.ttk as ttk
|
||||
|
||||
from .customtkinter_tk import CTk
|
||||
from .customtkinter_frame import CTkFrame
|
||||
@@ -111,13 +112,24 @@ class CTkEntry(tkinter.Frame):
|
||||
self.grid_columnconfigure(0, weight=1)
|
||||
|
||||
def detect_color_of_master(self):
|
||||
if isinstance(self.master, CTkFrame):
|
||||
""" detect color of self.master widget to set correct bg_color """
|
||||
|
||||
if isinstance(self.master, CTkFrame): # master is CTkFrame
|
||||
return self.master.fg_color
|
||||
else:
|
||||
|
||||
elif isinstance(self.master, (ttk.Frame, ttk.LabelFrame, ttk.Notebook)): # master is ttk widget
|
||||
print("button on", self.master.winfo_class())
|
||||
try:
|
||||
return self.master.cget("bg")
|
||||
except:
|
||||
pass
|
||||
ttk_style = ttk.Style()
|
||||
return ttk_style.lookup(self.master.winfo_class(), 'background')
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
else: # master is normal tkinter widget
|
||||
try:
|
||||
return self.master.cget("bg") # try to get bg color by .cget() method
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
def update_dimensions(self, event):
|
||||
# only redraw if dimensions changed (for performance)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import tkinter
|
||||
import tkinter.ttk as ttk
|
||||
|
||||
from .customtkinter_tk import CTk
|
||||
from .appearance_mode_tracker import AppearanceModeTracker
|
||||
@@ -94,10 +95,24 @@ class CTkFrame(tkinter.Frame):
|
||||
super().destroy()
|
||||
|
||||
def detect_color_of_master(self):
|
||||
if isinstance(self.master, CTkFrame):
|
||||
""" detect color of self.master widget to set correct bg_color """
|
||||
|
||||
if isinstance(self.master, CTkFrame): # master is CTkFrame
|
||||
return self.master.fg_color
|
||||
else:
|
||||
return self.master.cget("bg")
|
||||
|
||||
elif isinstance(self.master, (ttk.Frame, ttk.LabelFrame, ttk.Notebook)): # master is ttk widget
|
||||
print("button on", self.master.winfo_class())
|
||||
try:
|
||||
ttk_style = ttk.Style()
|
||||
return ttk_style.lookup(self.master.winfo_class(), 'background')
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
else: # master is normal tkinter widget
|
||||
try:
|
||||
return self.master.cget("bg") # try to get bg color by .cget() method
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
def update_dimensions(self, event):
|
||||
# only redraw if dimensions changed (for performance)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import tkinter
|
||||
import sys
|
||||
import tkinter.ttk as ttk
|
||||
|
||||
from .customtkinter_tk import CTk
|
||||
from .customtkinter_frame import CTkFrame
|
||||
@@ -99,10 +99,24 @@ class CTkLabel(tkinter.Frame):
|
||||
super().destroy()
|
||||
|
||||
def detect_color_of_master(self):
|
||||
if isinstance(self.master, CTkFrame):
|
||||
""" detect color of self.master widget to set correct bg_color """
|
||||
|
||||
if isinstance(self.master, CTkFrame): # master is CTkFrame
|
||||
return self.master.fg_color
|
||||
else:
|
||||
return self.master.cget("bg")
|
||||
|
||||
elif isinstance(self.master, (ttk.Frame, ttk.LabelFrame, ttk.Notebook)): # master is ttk widget
|
||||
print("button on", self.master.winfo_class())
|
||||
try:
|
||||
ttk_style = ttk.Style()
|
||||
return ttk_style.lookup(self.master.winfo_class(), 'background')
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
else: # master is normal tkinter widget
|
||||
try:
|
||||
return self.master.cget("bg") # try to get bg color by .cget() method
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
def update_dimensions(self, event):
|
||||
# only redraw if dimensions changed (for performance)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import sys
|
||||
import tkinter
|
||||
import tkinter.ttk as ttk
|
||||
|
||||
from .customtkinter_tk import CTk
|
||||
from .customtkinter_frame import CTkFrame
|
||||
@@ -96,10 +97,24 @@ class CTkProgressBar(tkinter.Frame):
|
||||
super().destroy()
|
||||
|
||||
def detect_color_of_master(self):
|
||||
if isinstance(self.master, CTkFrame):
|
||||
""" detect color of self.master widget to set correct bg_color """
|
||||
|
||||
if isinstance(self.master, CTkFrame): # master is CTkFrame
|
||||
return self.master.fg_color
|
||||
else:
|
||||
return self.master.cget("bg")
|
||||
|
||||
elif isinstance(self.master, (ttk.Frame, ttk.LabelFrame, ttk.Notebook)): # master is ttk widget
|
||||
print("button on", self.master.winfo_class())
|
||||
try:
|
||||
ttk_style = ttk.Style()
|
||||
return ttk_style.lookup(self.master.winfo_class(), 'background')
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
else: # master is normal tkinter widget
|
||||
try:
|
||||
return self.master.cget("bg") # try to get bg color by .cget() method
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
@staticmethod
|
||||
def calc_optimal_height(user_height):
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import tkinter
|
||||
import tkinter.ttk as ttk
|
||||
import sys
|
||||
|
||||
from customtkinter.customtkinter_tk import CTk
|
||||
@@ -135,10 +136,24 @@ class CTkRadioButton(tkinter.Frame):
|
||||
super().destroy()
|
||||
|
||||
def detect_color_of_master(self):
|
||||
if isinstance(self.master, CTkFrame):
|
||||
""" detect color of self.master widget to set correct bg_color """
|
||||
|
||||
if isinstance(self.master, CTkFrame): # master is CTkFrame
|
||||
return self.master.fg_color
|
||||
else:
|
||||
return self.master.cget("bg")
|
||||
|
||||
elif isinstance(self.master, (ttk.Frame, ttk.LabelFrame, ttk.Notebook)): # master is ttk widget
|
||||
print("button on", self.master.winfo_class())
|
||||
try:
|
||||
ttk_style = ttk.Style()
|
||||
return ttk_style.lookup(self.master.winfo_class(), 'background')
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
else: # master is normal tkinter widget
|
||||
try:
|
||||
return self.master.cget("bg") # try to get bg color by .cget() method
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
def draw(self):
|
||||
requires_recoloring = self.draw_engine.draw_rounded_rect_with_border(self.width, self.height, self.corner_radius, self.border_width)
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import tkinter
|
||||
import tkinter.ttk as ttk
|
||||
import sys
|
||||
|
||||
from .customtkinter_tk import CTk
|
||||
@@ -134,10 +135,24 @@ class CTkSlider(tkinter.Frame):
|
||||
self.grid_columnconfigure(0, weight=1)
|
||||
|
||||
def detect_color_of_master(self):
|
||||
if isinstance(self.master, CTkFrame):
|
||||
""" detect color of self.master widget to set correct bg_color """
|
||||
|
||||
if isinstance(self.master, CTkFrame): # master is CTkFrame
|
||||
return self.master.fg_color
|
||||
else:
|
||||
return self.master.cget("bg")
|
||||
|
||||
elif isinstance(self.master, (ttk.Frame, ttk.LabelFrame, ttk.Notebook)): # master is ttk widget
|
||||
print("button on", self.master.winfo_class())
|
||||
try:
|
||||
ttk_style = ttk.Style()
|
||||
return ttk_style.lookup(self.master.winfo_class(), 'background')
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
else: # master is normal tkinter widget
|
||||
try:
|
||||
return self.master.cget("bg") # try to get bg color by .cget() method
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
@staticmethod
|
||||
def calc_optimal_height(user_height):
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import tkinter
|
||||
import tkinter.ttk as ttk
|
||||
import sys
|
||||
|
||||
from .customtkinter_tk import CTk
|
||||
@@ -134,10 +135,24 @@ class CTkSwitch(tkinter.Frame):
|
||||
super().destroy()
|
||||
|
||||
def detect_color_of_master(self):
|
||||
if isinstance(self.master, CTkFrame):
|
||||
""" detect color of self.master widget to set correct bg_color """
|
||||
|
||||
if isinstance(self.master, CTkFrame): # master is CTkFrame
|
||||
return self.master.fg_color
|
||||
else:
|
||||
return self.master.cget("bg")
|
||||
|
||||
elif isinstance(self.master, (ttk.Frame, ttk.LabelFrame, ttk.Notebook)): # master is ttk widget
|
||||
print("button on", self.master.winfo_class())
|
||||
try:
|
||||
ttk_style = ttk.Style()
|
||||
return ttk_style.lookup(self.master.winfo_class(), 'background')
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
else: # master is normal tkinter widget
|
||||
try:
|
||||
return self.master.cget("bg") # try to get bg color by .cget() method
|
||||
except Exception:
|
||||
return "#FFFFFF", "#000000"
|
||||
|
||||
def draw(self, color_updates=True):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user