Lección 8 · 8 de 20
Botones de opción · tkinter
Un grupo de Radiobutton en tkinter: una sola StringVar para todo el grupo, una opción elegida al empezar y un precio que cambia con ella.

Los botones de opción (ttk.Radiobutton) van en grupo y solo uno puede estar elegido. Lo que los agrupa es que comparten la misma variable: method, una StringVar.
Cada botón tiene su `value`: "standard", "express" o "pickup". Al pulsar uno, la variable toma ese valor y los demás se desmarcan solos. Como method empieza en "express", ese botón sale elegido al abrir la ventana.
La lista options reúne el texto que se ve y el valor que se guarda, y el bucle crea los tres botones con dos líneas. El texto puede cambiar (o traducirse) sin tocar los valores que usa el programa.
update busca el precio en el diccionario prices con method.get() y lo escribe con dos decimales (:.2f). Se llama desde command con cada cambio y una vez al principio.
En DMarlon Studio es la Opción de la paleta. Las opciones con el mismo *Grupo* en el inspector comparten variable, cada una con su *Valor*, y la que esté *Marcada* empieza elegida.
Código · main.py
import tkinter as tkfrom tkinter import ttkroot = tk.Tk()root.title("Shipping")root.geometry("420x240")ttk.Label(root, text="Shipping method", font=("Helvetica", 16, "bold")).pack(anchor="w", padx=24, pady=(20, 8))# One StringVar for the whole group: it holds the chosen value.method = tk.StringVar(value="express")options = [("Standard (5 days)", "standard"), ("Express (2 days)", "express"), ("Pick up in store", "pickup")]prices = {"standard": 3.99, "express": 9.99, "pickup": 0.0}cost = ttk.Label(root, font=("Helvetica", 14))def update(): cost.config(text=f"Cost: ${prices[method.get()]:.2f}")# Same variable, different value: only one can be selected.for text, value in options: ttk.Radiobutton(root, text=text, value=value, variable=method, command=update).pack(anchor="w", padx=36, pady=3)cost.pack(anchor="w", padx=24, pady=16)update()root.mainloop()Para recordar
- Los botones de un grupo comparten una sola variable.
- Cada botón guarda en ella su
valueal pulsarlo. - El valor inicial de la variable decide cuál empieza elegido.
- Separe el texto que se ve del valor que usa el programa.
Ejercicio
Añada la opción «Overnight (1 day)» con el valor "overnight" y un precio de 19.99.