Resumo : neste tutorial, você aprenderá como criar um controle deslizante usando o widget Tkinter Scale.
Introdução ao widget deslizante Tkinter
Um controle deslizante permite inserir um valor movendo um indicador. Um controle deslizante pode ser vertical ou horizontal:
Para criar um controle deslizante, você usará o ttk.Scale()
construtor da seguinte maneira:
ttk.Scale(container,from_,to)
Linguagem de código: Python ( python )
Nesta sintaxe, container
especifica o componente pai do controle deslizante.
As opções from_
e to
especificam os valores mínimo e máximo do controle deslizante. Como from
é uma palavra-chave em Python, o Tkinter usa from_
.
Por padrão, um controle deslizante é horizontal. Para especificar como o controle deslizante está organizado, você usa a orient
opção que pode ser horizontal ou vertical. Por exemplo:
slider = ttk.Scale(
root,
from_=0,
to=100,
orient='vertical', # horizontal
)
Linguagem de código: Python ( python )
Obtendo o valor atual
Para obter o valor atual do controle deslizante, você pode atribuir um DoubleVar
ao variable
controle deslizante assim:
current_value = tk.DoubleVar()
slider = ttk.Scale(
root,
from_=0,
to=100,
orient='horizontal',
variable=current_value
)
Linguagem de código: Python ( python )
Outra maneira de obter o valor atual do slider é chamar o get()
método do objeto slider:
slider.get()
Linguagem de código: Python ( python )
Executando um retorno de chamada
Para executar uma função sempre que o valor do controle deslizante mudar, você pode atribuí-lo à command
opção da seguinte maneira:
def slider_changed(event):
print(slider.get())
slider = ttk.Scale(
root,
from_=0,
to=100,
orient='horizontal',
variable=current_value
command=slider_changed
)
Linguagem de código: Python ( python )
Observe que chamar uma função quando o valor do controle deslizante muda pode causar problemas de desempenho.
Desativando o controle deslizante
Para desativar o controle deslizante, você define seu estado como 'disabled'
. Para reativá-lo, você define seu estado como 'normal'
.
slider['state'] = 'disabled'
slider['state'] = 'normal'
Linguagem de código: Python ( python )
Por padrão, o estado do controle deslizante é 'normal'
.
Exemplo de controle deslizante Tkinter
O programa a seguir ilustra como usar um widget deslizante Tkinter. O rótulo atualizará o valor atual do controle deslizante quando você alterar o valor do controle deslizante.
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()
Linguagem de código: Python ( python )
Saída:
Resumo
- Use
ttk.Scale()
para criar um widget de controle deslizante. - Use a opção
scale.get()
ouvariable
para obter o valor atual do controle deslizante. - Use a
command
opção para atribuir uma função que será executada quando o valor do controle deslizante mudar.