mirror of
https://github.com/TomSchimansky/CustomTkinter.git
synced 2023-08-10 21:13:13 +03:00
add progress color for CTkSlider
This commit is contained in:
@@ -13,6 +13,7 @@ class CTkSlider(tkinter.Frame):
|
|||||||
bg_color=None,
|
bg_color=None,
|
||||||
border_color=None,
|
border_color=None,
|
||||||
fg_color=CTkColorManager.SLIDER_BG,
|
fg_color=CTkColorManager.SLIDER_BG,
|
||||||
|
progress_color=None,
|
||||||
button_color=CTkColorManager.MAIN,
|
button_color=CTkColorManager.MAIN,
|
||||||
button_hover_color=CTkColorManager.MAIN_HOVER,
|
button_hover_color=CTkColorManager.MAIN_HOVER,
|
||||||
from_=0,
|
from_=0,
|
||||||
@@ -30,6 +31,7 @@ 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 = self.bg_color if border_color is None else border_color
|
self.border_color = self.bg_color if border_color is None else border_color
|
||||||
self.fg_color = fg_color
|
self.fg_color = fg_color
|
||||||
|
self.progress_color = progress_color if progress_color is not None else fg_color
|
||||||
self.button_color = self.bg_color if button_color is None else button_color
|
self.button_color = self.bg_color if button_color is None else button_color
|
||||||
self.button_hover_color = self.bg_color if button_hover_color is None else button_hover_color
|
self.button_hover_color = self.bg_color if button_hover_color is None else button_hover_color
|
||||||
|
|
||||||
@@ -91,9 +93,9 @@ class CTkSlider(tkinter.Frame):
|
|||||||
|
|
||||||
if no_color_updates is False:
|
if no_color_updates is False:
|
||||||
self.canvas.configure(bg=CTkColorManager.single_color(self.bg_color, self.appearance_mode))
|
self.canvas.configure(bg=CTkColorManager.single_color(self.bg_color, self.appearance_mode))
|
||||||
print(self.border_color)
|
|
||||||
self.canvas.itemconfig("border_parts", fill=CTkColorManager.single_color(self.border_color, self.appearance_mode))
|
self.canvas.itemconfig("border_parts", fill=CTkColorManager.single_color(self.border_color, self.appearance_mode))
|
||||||
self.canvas.itemconfig("inner_parts", fill=CTkColorManager.single_color(self.fg_color, self.appearance_mode))
|
self.canvas.itemconfig("inner_parts", fill=CTkColorManager.single_color(self.fg_color, self.appearance_mode))
|
||||||
|
self.canvas.itemconfig("progress_parts", fill=CTkColorManager.single_color(self.progress_color, self.appearance_mode))
|
||||||
self.canvas.itemconfig("button_parts", fill=CTkColorManager.single_color(self.button_color, self.appearance_mode))
|
self.canvas.itemconfig("button_parts", fill=CTkColorManager.single_color(self.button_color, self.appearance_mode))
|
||||||
|
|
||||||
def draw_with_polygon_shapes(self):
|
def draw_with_polygon_shapes(self):
|
||||||
@@ -120,12 +122,26 @@ class CTkSlider(tkinter.Frame):
|
|||||||
if not self.canvas.find_withtag("inner_parts"):
|
if not self.canvas.find_withtag("inner_parts"):
|
||||||
self.canvas.create_line((0, 0, 0, 0), tags=("inner_line_1", "inner_parts"))
|
self.canvas.create_line((0, 0, 0, 0), tags=("inner_line_1", "inner_parts"))
|
||||||
|
|
||||||
|
if self.progress_color != self.fg_color:
|
||||||
|
self.canvas.create_line((0, 0, 0, 0), tags=("inner_line_progress", "progress_parts"))
|
||||||
|
|
||||||
self.canvas.coords("inner_line_1",
|
self.canvas.coords("inner_line_1",
|
||||||
(self.height / 2,
|
(self.height / 2,
|
||||||
self.height / 2,
|
self.height / 2,
|
||||||
self.width - self.height / 2 + coordinate_shift,
|
self.width - self.height / 2 + coordinate_shift,
|
||||||
self.height / 2))
|
self.height / 2))
|
||||||
self.canvas.itemconfig("inner_line_1",
|
|
||||||
|
if self.progress_color != self.fg_color:
|
||||||
|
self.canvas.coords("inner_line_progress",
|
||||||
|
(self.height / 2,
|
||||||
|
self.height / 2,
|
||||||
|
((self.width + coordinate_shift - self.height) * self.value + self.height / 2),
|
||||||
|
self.height / 2))
|
||||||
|
|
||||||
|
self.canvas.itemconfig("inner_parts",
|
||||||
|
capstyle=tkinter.ROUND,
|
||||||
|
width=self.height - self.border_width * 2 + width_reduced)
|
||||||
|
self.canvas.itemconfig("progress_parts",
|
||||||
capstyle=tkinter.ROUND,
|
capstyle=tkinter.ROUND,
|
||||||
width=self.height - self.border_width * 2 + width_reduced)
|
width=self.height - self.border_width * 2 + width_reduced)
|
||||||
|
|
||||||
@@ -171,18 +187,34 @@ class CTkSlider(tkinter.Frame):
|
|||||||
|
|
||||||
# foreground
|
# foreground
|
||||||
if not self.canvas.find_withtag("inner_parts"):
|
if not self.canvas.find_withtag("inner_parts"):
|
||||||
self.canvas.create_oval((0, 0, 0, 0), tags=("inner_oval_1", "inner_parts"), width=0)
|
self.canvas.create_rectangle((0, 0, 0, 0), tags=("inner_rect_2", "inner_parts"), width=0)
|
||||||
self.canvas.create_rectangle((0, 0, 0, 0), tags=("inner_rect_1", "inner_parts"), width=0)
|
|
||||||
self.canvas.create_oval((0, 0, 0, 0), tags=("inner_oval_2", "inner_parts"), width=0)
|
self.canvas.create_oval((0, 0, 0, 0), tags=("inner_oval_2", "inner_parts"), width=0)
|
||||||
|
|
||||||
|
if self.progress_color != self.fg_color:
|
||||||
|
self.canvas.create_oval((0, 0, 0, 0), tags=("inner_oval_1", "progress_parts"), width=0)
|
||||||
|
self.canvas.create_rectangle((0, 0, 0, 0), tags=("inner_rect_1", "progress_parts"), width=0)
|
||||||
|
else:
|
||||||
|
self.canvas.create_oval((0, 0, 0, 0), tags=("inner_oval_1", "inner_parts"), width=0)
|
||||||
|
|
||||||
|
if self.progress_color != self.fg_color:
|
||||||
|
self.canvas.coords("inner_rect_1", (self.height / 2,
|
||||||
|
self.border_width,
|
||||||
|
(self.width - self.height) * self.value + (self.height / 2 + rect_bottom_right_shift),
|
||||||
|
self.height - self.border_width + rect_bottom_right_shift))
|
||||||
|
self.canvas.coords("inner_rect_2", ((self.width - self.height) * self.value + (self.height / 2 + rect_bottom_right_shift),
|
||||||
|
self.border_width,
|
||||||
|
self.width - (self.height / 2 + rect_bottom_right_shift),
|
||||||
|
self.height - self.border_width + rect_bottom_right_shift))
|
||||||
|
else:
|
||||||
|
self.canvas.coords("inner_rect_2", (self.height/2,
|
||||||
|
self.border_width,
|
||||||
|
self.width-(self.height/2 + rect_bottom_right_shift),
|
||||||
|
self.height-self.border_width + rect_bottom_right_shift))
|
||||||
|
|
||||||
self.canvas.coords("inner_oval_1", (self.border_width,
|
self.canvas.coords("inner_oval_1", (self.border_width,
|
||||||
self.border_width,
|
self.border_width,
|
||||||
self.height - self.border_width + oval_bottom_right_shift,
|
self.height - self.border_width + oval_bottom_right_shift,
|
||||||
self.height - self.border_width + oval_bottom_right_shift))
|
self.height - self.border_width + oval_bottom_right_shift))
|
||||||
self.canvas.coords("inner_rect_1", (self.height/2,
|
|
||||||
self.border_width,
|
|
||||||
self.width-(self.height/2 + rect_bottom_right_shift),
|
|
||||||
self.height-self.border_width + rect_bottom_right_shift))
|
|
||||||
self.canvas.coords("inner_oval_2", (self.width-self.height+self.border_width,
|
self.canvas.coords("inner_oval_2", (self.width-self.height+self.border_width,
|
||||||
self.border_width,
|
self.border_width,
|
||||||
self.width-self.border_width + oval_bottom_right_shift,
|
self.width-self.border_width + oval_bottom_right_shift,
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ 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=2)
|
slider_1 = customtkinter.CTkSlider(master=frame_1, command=slider_function, from_=0, to=2, progress_color="gray40")
|
||||||
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(1.5)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user