Giao diện - Tkinter - Slider
Tkinter Slider
Summary: in this tutorial, you’ll learn how to create a slider using the Tkinter Scale widget.
Introduction to Tkinter slider widget
A slider allows you to enter a value by moving an indicator. A slider can be vertical or horizontal:
To create a slider, you’ll use the ttk.Scale()
constructor as follows:
ttk.Scale(container,from_,to)
Code language: Python (python)
In this syntax, the container
specifies the parent component of the slider.
The from_
and to
options specify the minimum and maximum values of the slider. Since from
is a keyword in Python, Tkinter uses from_
instead.
By default, a slider is horizontal. To specify how the slider is arranged, you use the orient
option which can be horizontal or vertical. For example:
slider = ttk.Scale( root, from_=0, to=100, orient='vertical', # horizontal )
Code language: Python (python)
Getting current value
To get the current value of the slider, you can assign a DoubleVar
to the variable
of the slider like this:
current_value = tk.DoubleVar() slider = ttk.Scale( root, from_=0, to=100, orient='horizontal', variable=current_value )
Code language: Python (python)
Another way to get the current value of slider is to call the get()
method of the slider object:
slider.get()
Code language: Python (python)
Executing a callback
To run a function whenever the value of the slider changes, you can assign it to the command
option as follows:
def slider_changed(event): print(slider.get()) slider = ttk.Scale( root, from_=0, to=100, orient='horizontal', variable=current_value command=slider_changed )
Code language: Python (python)
Notice that calling a function when the value of the slider changes can cause performance problems.
Disabling the slider
To disable the slider, you set its state to 'disabled'
. To re-enable it, you set its state to 'normal'
.
slider['state'] = 'disabled' slider['state'] = 'normal'
Code language: Python (python)
By default, the slider’s state is 'normal'
.
Tkinter slider example
The following program illustrates how to use a Tkinter slider widget. The label will update the current value of the slider when you change the slider’s value.
import tkinter as tk from tkinter import ttk # root window root = tk.Tk() root.geometry('300x200') root.resizable(False, False) root.title('Slider Demo') root.columnconfigure(0, weight=1) root.columnconfigure(1, weight=3) # slider current value current_value = tk.DoubleVar() def get_current_value(): return '{: .2f}'.format(current_value.get()) def slider_changed(event): value_label.configure(text=get_current_value()) # label for the slider slider_label = ttk.Label( root, text='Slider:' ) slider_label.grid( column=0, row=0, sticky='w' ) # slider slider = ttk.Scale( root, from_=0, to=100, orient='horizontal', # vertical command=slider_changed, variable=current_value ) slider.grid( column=1, row=0, sticky='we' ) # current value label current_value_label = ttk.Label( root, text='Current Value:' ) current_value_label.grid( row=1, columnspan=2, sticky='n', ipadx=10, ipady=10 ) # value label value_label = ttk.Label( root, text=get_current_value() ) value_label.grid( row=2, columnspan=2, sticky='n' ) root.mainloop()
Code language: Python (python)
Output:
Summary
- Use the
ttk.Scale()
to create a slider widget. - Use the
scale.get()
or thevariable
option to get the current value of the slider. - Use the
command
option to assign a function that will execute when the slider’s value changes.