mirror of
https://github.com/TomSchimansky/CustomTkinter.git
synced 2023-08-10 21:13:13 +03:00
added number_of_steps argument for CTkSlider
This commit is contained in:
parent
b3d32a419f
commit
b7fc6f3ad9
@ -345,6 +345,7 @@ width | slider width in px
|
|||||||
height | slider height in px
|
height | slider height in px
|
||||||
from_ | lower slider value
|
from_ | lower slider value
|
||||||
to | upper slider value
|
to | upper slider value
|
||||||
|
number_of_steps | number of steps in which the slider can be positioned
|
||||||
border_width | space around the slider rail in px
|
border_width | space around the slider rail in px
|
||||||
fg_color | forground color, tuple: (light_color, dark_color) or single color
|
fg_color | forground color, tuple: (light_color, dark_color) or single color
|
||||||
progress_color | tuple: (light_color, dark_color) or single color, colors the slider line before the round button and is set to fg_color by default
|
progress_color | tuple: (light_color, dark_color) or single color, colors the slider line before the round button and is set to fg_color by default
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# CustomTkinter
|
# CustomTkinter
|
||||||
|
|
||||||
![macOS darkmode](https://raw.githubusercontent.com/TomSchimansky/CustomTkinter/master/documentation_images/customtkinter_mode_switch.gif)
|
![](https://raw.githubusercontent.com/TomSchimansky/CustomTkinter/master/documentation_images/customtkinter_mode_switch.gif)
|
||||||
|
|
||||||
With CustomTkinter you can create modern looking user
|
With CustomTkinter you can create modern looking user
|
||||||
interfaces in python with tkinter. CustomTkinter is a
|
interfaces in python with tkinter. CustomTkinter is a
|
||||||
|
@ -18,6 +18,7 @@ class CTkSlider(tkinter.Frame):
|
|||||||
button_hover_color=CTkColorManager.MAIN_HOVER,
|
button_hover_color=CTkColorManager.MAIN_HOVER,
|
||||||
from_=0,
|
from_=0,
|
||||||
to=1,
|
to=1,
|
||||||
|
number_of_steps=None,
|
||||||
width=160,
|
width=160,
|
||||||
height=16,
|
height=16,
|
||||||
border_width=5,
|
border_width=5,
|
||||||
@ -43,6 +44,7 @@ class CTkSlider(tkinter.Frame):
|
|||||||
self.hover_state = False
|
self.hover_state = False
|
||||||
self.from_ = from_
|
self.from_ = from_
|
||||||
self.to = to
|
self.to = to
|
||||||
|
self.number_of_steps = number_of_steps
|
||||||
self.output_value = self.from_ + (self.value * (self.to - self.from_))
|
self.output_value = self.from_ + (self.value * (self.to - self.from_))
|
||||||
|
|
||||||
self.configure(width=self.width, height=self.height)
|
self.configure(width=self.width, height=self.height)
|
||||||
@ -238,7 +240,8 @@ class CTkSlider(tkinter.Frame):
|
|||||||
if self.value < 0:
|
if self.value < 0:
|
||||||
self.value = 0
|
self.value = 0
|
||||||
|
|
||||||
self.output_value = self.from_ + (self.value * (self.to - self.from_))
|
self.output_value = self.round_to_step_size(self.from_ + (self.value * (self.to - self.from_)))
|
||||||
|
self.value = (self.output_value - self.from_) / (self.to - self.from_)
|
||||||
|
|
||||||
self.draw(no_color_updates=True)
|
self.draw(no_color_updates=True)
|
||||||
|
|
||||||
@ -253,11 +256,19 @@ class CTkSlider(tkinter.Frame):
|
|||||||
self.hover_state = False
|
self.hover_state = False
|
||||||
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 round_to_step_size(self, value):
|
||||||
|
if self.number_of_steps is not None:
|
||||||
|
step_size = (self.to - self.from_) / self.number_of_steps
|
||||||
|
value = self.to - (round((self.to - value) / step_size) * step_size)
|
||||||
|
return value
|
||||||
|
else:
|
||||||
|
return value
|
||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
return self.output_value
|
return self.output_value
|
||||||
|
|
||||||
def set(self, output_value):
|
def set(self, output_value):
|
||||||
self.output_value = output_value
|
self.output_value = self.round_to_step_size(output_value)
|
||||||
self.value = (self.output_value - self.from_) / (self.to - self.from_)
|
self.value = (self.output_value - self.from_) / (self.to - self.from_)
|
||||||
|
|
||||||
self.draw(no_color_updates=True)
|
self.draw(no_color_updates=True)
|
||||||
|
@ -94,12 +94,17 @@ class App(tkinter.Tk):
|
|||||||
border_width=3)
|
border_width=3)
|
||||||
self.progressbar.place(relx=0.5, rely=0.85, anchor=tkinter.S)
|
self.progressbar.place(relx=0.5, rely=0.85, anchor=tkinter.S)
|
||||||
|
|
||||||
|
# from tkintermapview import TkinterMapView
|
||||||
|
# self.map_widget = TkinterMapView(self.frame_info, width=380, height=200, corner_radius=10)
|
||||||
|
# self.map_widget.place(relx=0.5, rely=0.5, anchor=tkinter.CENTER)
|
||||||
|
|
||||||
# ============ frame_right <- ============
|
# ============ frame_right <- ============
|
||||||
|
|
||||||
self.slider_1 = customtkinter.CTkSlider(master=self.frame_right,
|
self.slider_1 = customtkinter.CTkSlider(master=self.frame_right,
|
||||||
width=160,
|
width=160,
|
||||||
height=16,
|
height=16,
|
||||||
border_width=5,
|
border_width=5,
|
||||||
|
number_of_steps=3,
|
||||||
command=self.progressbar.set)
|
command=self.progressbar.set)
|
||||||
self.slider_1.place(x=20, rely=0.6, anchor=tkinter.W)
|
self.slider_1.place(x=20, rely=0.6, anchor=tkinter.W)
|
||||||
self.slider_1.set(0.3)
|
self.slider_1.set(0.3)
|
||||||
|
@ -119,6 +119,7 @@ class App(tkinter.Tk):
|
|||||||
button_hover_color=App.MAIN_HOVER,
|
button_hover_color=App.MAIN_HOVER,
|
||||||
width=160,
|
width=160,
|
||||||
height=16,
|
height=16,
|
||||||
|
number_of_steps=3,
|
||||||
border_width=5,
|
border_width=5,
|
||||||
command=self.progressbar.set)
|
command=self.progressbar.set)
|
||||||
self.slider_1.place(x=20, rely=0.6, anchor=tkinter.W)
|
self.slider_1.place(x=20, rely=0.6, anchor=tkinter.W)
|
||||||
|
Loading…
Reference in New Issue
Block a user