1. Checkboxes (Checkbutton
)
Un checkbox es un botón cuadrado que puede estar activado o desactivado. Es útil cuando necesitas darle al usuario la posibilidad de seleccionar una o varias opciones de las ofrecidas.
Crear un checkbox
Para crear un checkbox se usa el widget Checkbutton
. Para rastrear el estado del checkbox (marcado o no), generalmente se utiliza una variable de tipo IntVar
, que almacena el valor 1
si el checkbox está activado, y 0
si está desactivado.
import tkinter as tk
# Función para verificar el estado del checkbox
def show_status():
print("Encendido" if var.get() == 1 else "Apagado")
# Crear la ventana
root = tk.Tk()
root.title("Ejemplo con checkbox")
# Variable para almacenar estado
var = tk.IntVar()
# Checkbox vinculado a la variable var
checkbox = tk.Checkbutton(root, text="Activar opción", variable=var, command=show_status)
checkbox.pack(pady=20)
root.mainloop()
Explicación del código
-
variable=var
: Vincula el checkbox a la variablevar
, que se actualiza cada vez que cambia el estado del checkbox. -
Función
show_status()
: Muestra en la consola el estado actual del checkbox. Si el checkbox está marcado, imprime "Encendido", de lo contrario "Apagado".
Usar múltiples checkboxes
Si necesitas varias opciones independientes, puedes crear varios checkboxes, cada uno vinculado a su propia variable.
# Variables para almacenar estado
option1 = tk.IntVar()
option2 = tk.IntVar()
# Checkboxes
check1 = tk.Checkbutton(root, text="Opción 1", variable=option1)
check2 = tk.Checkbutton(root, text="Opción 2", variable=option2)
check1.pack()
check2.pack()
2. Botones de opción (Radiobutton
)
Los botones de opción son un conjunto de botones redondos donde el usuario puede elegir solo uno. Son útiles cuando quieres ofrecer una sola opción de varias posibles.
Crear botones de opción
Para crear botones de opción, se usa el widget Radiobutton
. Para vincular los botones y hacer que su selección sea mutuamente excluyente, todos deben estar vinculados a una sola variable (IntVar
o StringVar
).
# Función para mostrar la opción seleccionada
def show_choice():
print(f"Opción seleccionada: {choice.get()}")
# Variable para rastrear la selección
choice = tk.IntVar()
# Botones de opción
radio1 = tk.Radiobutton(root, text="Opción 1", variable=choice, value=1, command=show_choice)
radio2 = tk.Radiobutton(root, text="Opción 2", variable=choice, value=2, command=show_choice)
radio3 = tk.Radiobutton(root, text="Opción 3", variable=choice, value=3, command=show_choice)
radio1.pack()
radio2.pack()
radio3.pack()
Explicación del código
-
variable=choice
: Vincula todos los botones de opción a una sola variablechoice
, para hacer que sean mutuamente excluyentes. -
value
: Define el valor que tomará la variablechoice
si el usuario selecciona ese botón. -
Función
show_choice()
: Muestra en la consola la opción seleccionada.
Botones de opción con valores de texto
También puedes vincular botones de opción a una variable de tipo StringVar
, para usar valores de texto.
# Variable para seleccionar texto
color_choice = tk.StringVar()
# Botones de opción con valores de texto
radio_red = tk.Radiobutton(root, text="Rojo", 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
)
Un spinbox permite al usuario seleccionar un valor numérico dentro de un rango. Este widget es útil para introducir datos numéricos, como edad o cantidad.
Crear un spinbox
En Tkinter, un spinbox se crea con el widget Spinbox
, que permite al usuario ingresar un valor manualmente o seleccionarlo mediante flechas.
# Función para mostrar el valor seleccionado
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)
Explicación del código
from_
yto
: Definen el rango de valores para el spinbox.- Función
show_spin_value()
: Muestra en la consola el valor seleccionado cada vez que cambia.
Configurar incremento y valores
El parámetro increment
permite establecer el paso del spinbox y values
permite especificar valores concretos.
# Spinbox con valores en pasos de 2
spin_step = tk.Spinbox(root, from_=0, to=20, increment=2)
spin_step.pack(pady=5)
# Spinbox con valores definidos
spin_values = tk.Spinbox(root, values=("Pequeño", "Medio", "Grande"))
spin_values.pack(pady=5)
4. Ejemplo de aplicación
Aplicación con checkboxes, botones de opción y spinboxes
Ahora vamos a juntar todo y crear una interfaz con checkboxes, botones de opción y spinboxes que permita al usuario elegir varias opciones y ver el resultado.
import tkinter as tk
# Crear la ventana principal
root = tk.Tk()
root.title("Ejemplo con checkboxes, botones de opción y spinboxes")
root.geometry("300x300")
# Funciones para mostrar las selecciones
def show_selections():
selections = []
selections.append(f"Checkbox activado: {'Sí' if option.get() == 1 else 'No'}")
selections.append(f"Color seleccionado: {color_choice.get()}")
selections.append(f"Cantidad: {spin.get()}")
message_label.config(text="\n".join(selections))
# Checkbox
option = tk.IntVar()
checkbox = tk.Checkbutton(root, text="Activar opción", variable=option)
checkbox.pack(pady=5)
# Botones de opción
color_choice = tk.StringVar(value="Rojo")
tk.Label(root, text="Selecciona un color:").pack()
radio_red = tk.Radiobutton(root, text="Rojo", variable=color_choice, value="Rojo")
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="Cantidad:").pack()
spin = tk.Spinbox(root, from_=1, to=10)
spin.pack(pady=5)
# Botón para mostrar las selecciones
show_button = tk.Button(root, text="Mostrar selecciones", command=show_selections)
show_button.pack(pady=10)
# Etiqueta para mostrar resultados
message_label = tk.Label(root, text="", justify="left")
message_label.pack(pady=5)
root.mainloop()
Explicación del ejemplo completo
- Checkbox: Marca el estado "Activar opción".
- Botones de opción: Permiten elegir uno de tres colores.
- Spinbox: Permite seleccionar una cantidad del 1 al 10.
- Botón "Mostrar selecciones": Muestra los estados actuales de todos los widgets en la etiqueta
message_label
.
GO TO FULL VERSION