CodeGym /Cursos /Python SELF PT /Trabalhando com checkboxes, botões de rádio e spinboxes

Trabalhando com checkboxes, botões de rádio e spinboxes

Python SELF PT
Nível 50 , Lição 2
Disponível

1. Checkboxes (Checkbutton)

Um checkbox é um botão quadrado que pode ser marcado ou desmarcado. Ele é útil quando queremos fornecer ao usuário a opção de escolher uma ou mais opções dentro de um conjunto.

Criando um checkbox

Para criar um checkbox, usamos o widget Checkbutton. Para monitorar o estado do checkbox (marcado ou desmarcado), geralmente usamos uma variável do tipo IntVar, que armazena o valor 1 quando marcado e 0 quando desmarcado.

Python
import tkinter as tk

# Função para verificar o estado do checkbox
def show_status():
    print("Ligado" if var.get() == 1 else "Desligado")

# Criando a janela
root = tk.Tk()
root.title("Exemplo de checkbox")

# Variável para armazenar o estado
var = tk.IntVar()

# Checkbox vinculado à variável var
checkbox = tk.Checkbutton(root, text="Ativar opção", variable=var, command=show_status)
checkbox.pack(pady=20)

root.mainloop()

Explicando o código

  • variable=var: Vincula o checkbox à variável var, que é atualizada sempre que o estado do checkbox muda.
  • Função show_status(): Mostra no console o estado atual do checkbox. Se marcado, exibe "Ligado", caso contrário, "Desligado".

Usando múltiplos checkboxes

Caso precise de várias opções independentes, você pode criar múltiplos checkboxes, cada um vinculado à sua própria variável.

Python
# Variáveis para armazenar estados
option1 = tk.IntVar()
option2 = tk.IntVar()

# Checkboxes
check1 = tk.Checkbutton(root, text="Opção 1", variable=option1)
check2 = tk.Checkbutton(root, text="Opção 2", variable=option2)
check1.pack()
check2.pack()

2. Botões de Rádio (Radiobutton)

Botões de rádio são um conjunto de botões redondos em que o usuário pode escolher apenas um. Eles são usados quando queremos que o usuário selecione uma única opção dentro de um grupo.

Criando botões de rádio

Para criar botões de rádio, usamos o widget Radiobutton. Para vincular os botões e tornar suas seleções interdependentes, todos devem estar associados a uma única variável (IntVar ou StringVar).

Python
# Função para exibir a opção escolhida
def show_choice():
    print(f"Opção selecionada: {choice.get()}")

# Variável para monitorar a escolha
choice = tk.IntVar()

# Botões de rádio
radio1 = tk.Radiobutton(root, text="Opção 1", variable=choice, value=1, command=show_choice)
radio2 = tk.Radiobutton(root, text="Opção 2", variable=choice, value=2, command=show_choice)
radio3 = tk.Radiobutton(root, text="Opção 3", variable=choice, value=3, command=show_choice)

radio1.pack()
radio2.pack()
radio3.pack()

Explicando o código

  • variable=choice: Vincula todos os botões de rádio à mesma variável choice, tornando-os interdependentes.
  • value: Determina o valor que a variável choice assumirá caso o botão seja selecionado.
  • Função show_choice(): Exibe no console a opção escolhida.

Botões de rádio com valores de texto

Também é possível associar botões de rádio a uma variável do tipo StringVar, para usar valores textuais.

Python
# Variável para armazenar texto
color_choice = tk.StringVar()

# Botões de rádio com valores textuais
radio_red = tk.Radiobutton(root, text="Vermelho", variable=color_choice, value="Red")
radio_blue = tk.Radiobutton(root, text="Azul", variable=color_choice, value="Blue")
radio_green = tk.Radiobutton(root, text="Verde", variable=color_choice, value="Green")

radio_red.pack()
radio_blue.pack()
radio_green.pack()

3. Spinboxes (Spinbox)

Spinboxes permitem que o usuário escolha um valor numérico dentro de um intervalo. Esse widget é útil para entrada de dados numéricos, como idade ou quantidade.

Criando um spinbox

No Tkinter, um spinbox é criado com o widget Spinbox, que permite ao usuário inserir um valor manualmente ou selecioná-lo usando setas.

Python
# Função para exibir o valor selecionado
def show_spin_value():
    print(f"Valor: {spin.get()}")

# Spinbox de 1 a 10
spin = tk.Spinbox(root, from_=1, to=10, command=show_spin_value)
spin.pack(pady=20)

Explicando o código

  • from_ e to: Definem o intervalo de valores para o spinbox.
  • Função show_spin_value(): Exibe o valor selecionado no console toda vez que ele é alterado.

Configurando passos e valores

O parâmetro increment permite definir o passo do spinbox, enquanto values permite especificar valores específicos.

Python
# Spinbox com passo de 2
spin_step = tk.Spinbox(root, from_=0, to=20, increment=2)
spin_step.pack(pady=5)

# Spinbox com valores específicos
spin_values = tk.Spinbox(root, values=("Pequeno", "Médio", "Grande"))
spin_values.pack(pady=5)

4. Exemplo de Aplicativo

Aplicativo com checkboxes, botões de rádio e spinboxes

Agora vamos juntar tudo e criar uma interface com checkboxes, botões de rádio e spinboxes, permitindo ao usuário selecionar várias opções e visualizar o resultado.

Python
import tkinter as tk

# Criando a janela principal
root = tk.Tk()
root.title("Exemplo com checkboxes, botões de rádio e spinboxes")
root.geometry("300x300")

# Função para exibir as seleções feitas
def show_selections():
    selections = []
    selections.append(f"Checkbox marcado: {'Sim' if option.get() == 1 else 'Não'}")
    selections.append(f"Cor escolhida: {color_choice.get()}")
    selections.append(f"Quantidade: {spin.get()}")
    message_label.config(text="\n".join(selections))

# Checkbox
option = tk.IntVar()
checkbox = tk.Checkbutton(root, text="Ativar opção", variable=option)
checkbox.pack(pady=5)

# Botões de rádio
color_choice = tk.StringVar(value="Vermelho")
tk.Label(root, text="Escolha uma cor:").pack()
radio_red = tk.Radiobutton(root, text="Vermelho", variable=color_choice, value="Vermelho")
radio_blue = tk.Radiobutton(root, text="Azul", variable=color_choice, value="Azul")
radio_green = tk.Radiobutton(root, text="Verde", variable=color_choice, value="Verde")
radio_red.pack()
radio_blue.pack()
radio_green.pack()

# Spinbox
tk.Label(root, text="Quantidade:").pack()
spin = tk.Spinbox(root, from_=1, to=10)
spin.pack(pady=5)

# Botão para mostrar as seleções
show_button = tk.Button(root, text="Mostrar seleção", command=show_selections)
show_button.pack(pady=10)

# Label para exibir os resultados
message_label = tk.Label(root, text="", justify="left")
message_label.pack(pady=5)

root.mainloop()

Explicando o exemplo completo

  • Checkbox: Marca o estado "Ativar opção".
  • Botões de rádio: Permitem escolher uma das três cores.
  • Spinbox: Permite selecionar uma quantidade de 1 a 10.
  • Botão "Mostrar seleção": Exibe os estados atuais de todos os widgets no label message_label.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION