Controle deslizante Tkinter

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, containerespecifica o componente pai do controle deslizante.

As opções from_e toespecificam 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 orientopçã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 DoubleVarao variablecontrole 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 à commandopçã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()ou variablepara obter o valor atual do controle deslizante.
  • Use a commandopção para atribuir uma função que será executada quando o valor do controle deslizante mudar.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *