Resumo : neste tutorial, você aprenderá como criar widgets Tkinter Spinbox.
Introdução ao widget Tkinter Spinbox
Um widget Spinbox permite selecionar um valor de um conjunto de valores, que pode incluir um intervalo de números.
Uma Spinbox possui uma área para exibir o valor atual e um par de pontas de seta.
Quando você clica na seta apontando para cima, a caixa giratória avança para o próximo valor mais alto na sequência.
Se o valor atual atingir o máximo, você poderá defini-lo para o mínimo.
Por outro lado, se você clicar na seta apontando para baixo, o Spinbox diminuirá o valor atual para o próximo valor inferior na sequência.
Se o valor atual atingir o mínimo, você poderá configurá-lo para o máximo.
Além disso, você pode inserir um valor diretamente no widget Spinbox, como faria com um widget Entry .
Para criar um widget Spinbox, você usa o ttk.Spinbox
construtor:
ttk.Spinbox(master, from_, to, textvariable, wrap)
Linguagem de código: CSS ( css )
Nesta sintaxe:
- O
master
é o widget pai doSpinbox
widget. - O
from_
é o valor mínimo. Comofrom
é a palavra-chave Python, ela deve ter o sufixo do sublinhado(_
) para evitar o erro de compilação. - O
to
valor representa o valor máximo. - Especifica
textvariable
um objetoStringVar
ouIntVar
da classe Tkinter que contém o valor atual do arquivoSpinbox
. - O
wrap
é um valor booleano. Sewrap
estiver definido comoTrue
, quando o valor atual atingir o valor máximo, ele será definido como o valor mais baixo se você clicar na seta apontando para cima e vice-versa. Sewrap
definido comoFalse
, o widget definirá o valor atual para o máximo se você clicar na seta apontando para baixo.
Observe que ttk.Spinbox
está disponível desde Python 3.7. Se você estiver usando uma versão inferior, precisará usar o tk.Spinbox
.
Obtendo o valor atual
Para obter o valor atual do Spinbox, você pode acessar a variável text. Por exemplo:
current_value = tk.StringVar(value=0)
spin_box = ttk.Spinbox(
container,
from_=0,
to=30,
textvariable=current_value,
wrap=True)
Linguagem de código: PHP ( php )
Neste exemplo, current_value
contém o valor atual do widget Spinbox. Você pode obtê-lo chamando o método get():
current_value.get()
Linguagem de código: CSS ( css )
Além disso, você pode usar o get()
método do objeto Spinbox:
spin_box.get()
Linguagem de código: CSS ( css )
Executando uma função
Para executar uma função quando o valor do Spinbox muda, você pode atribuir essa função à command
opção. Por exemplo:
def value_changed():
print(current_value.get())
current_value = tk.StringVar(value=0)
spin_box = ttk.Spinbox(
container,
from_=0,
to=30,
textvariable=current_value,
command=value_changed)
Linguagem de código: Python ( python )
Neste exemplo, a value_changed
função será executada automaticamente sempre que o valor do Spinbox for alterado.
Configurando etapas discretas
Para definir uma lista de etapas discretas para um Spinbox, você atribui uma tupla de números discretos à values
opção como esta:
ttk.Spinbox(
...
values=tuple
...
)
Exemplos de widgets Tkinter Spinbox
Vejamos alguns exemplos de criação de um widget Spinbox.
1) Um exemplo simples de widget Tkinter Spinbox
O programa a seguir ilustra como usar o Spinbox:
import tkinter as tk
from tkinter import ttk
# root window
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Spinbox Demo')
# Spinbox
current_value = tk.StringVar(value=0)
spin_box = ttk.Spinbox(
root,
from_=0,
to=30,
textvariable=current_value,
wrap=True)
spin_box.pack()
root.mainloop()
Linguagem de código: Python ( python )
Saída:
2) Tkinter Spinbox com etapas discretas
O exemplo a seguir mostra como criar um Spinbox com etapas discretas:
import tkinter as tk
from tkinter import ttk
# root window
root = tk.Tk()
root.geometry('300x200')
root.resizable(False, False)
root.title('Spinbox Demo')
# spinbox
current_value = tk.StringVar()
spin_box = ttk.Spinbox(
root,
from_=0,
to=50,
values=(0, 10, 20, 30, 40, 50),
textvariable=current_value,
wrap=True)
spin_box.pack()
root.mainloop()
Linguagem de código: Python ( python )
Saída:
Resumo
- Use
ttk.Spinbox(container, **options)
para criar uma Spinbox. - Defina
wrap=True
para definir o valor atual para o valor mínimo quando atingir o valor máximo e vice-versa.