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.
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ávelvar
, 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.
# 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
).
# 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ávelchoice
, tornando-os interdependentes. -
value
: Determina o valor que a variávelchoice
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.
# 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.
# 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_
eto
: 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.
# 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.
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
.
GO TO FULL VERSION