Caixa giratória Tkinter

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.Spinboxconstrutor:

ttk.Spinbox(master, from_, to, textvariable, wrap)Linguagem de código:  CSS  ( css )

Nesta sintaxe:

  • O masteré o widget pai do Spinboxwidget.
  • O from_é o valor mínimo. Como fromé a palavra-chave Python, ela deve ter o sufixo do sublinhado (_) para evitar o erro de compilação.
  • O tovalor representa o valor máximo.
  • Especifica textvariableum objeto StringVarou IntVarda classe Tkinter que contém o valor atual do arquivo Spinbox.
  • O wrapé um valor booleano. Se wrapestiver definido como True, 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. Se wrapdefinido como False, o widget definirá o valor atual para o máximo se você clicar na seta apontando para baixo.

Observe que ttk.Spinboxestá 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_valueconté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 à commandopçã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_changedfunçã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 à valuesopçã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=Truepara definir o valor atual para o valor mínimo quando atingir o valor máximo e vice-versa.

Deixe um comentário

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