CodeGym /Cursos /Python SELF ES /Trabajar con checkboxes, botones de opción y spinboxes

Trabajar con checkboxes, botones de opción y spinboxes

Python SELF ES
Nivel 50 , Lección 2
Disponible

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.

Python
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 variable var, 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.

Python
# 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).

Python
# 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 variable choice, para hacer que sean mutuamente excluyentes.
  • value: Define el valor que tomará la variable choice 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.

Python
# 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.

Python
# 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_ y to: 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.

Python
# 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.

Python
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.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION