¿Cómo detectar la opción de un Radiobutton de Tkinter?
Capítulo 8: Bucle autogenerador de Radiobutton() y botón de envío
En este capítulo terminamos por el momento con el tema de los Radiobutton().
Vamos a ver cómo enviar a nuestro programa la opción seleccionada en el Radiobutton() en el momento de pulsar un botón.
Voy a continuar con el código del capítulo 7. Simplemente le voy a eliminar las funciones lambda a los Radiobutton() y a ponerle una a un botón. Quedará de esta forma:
from tkinter import *
root = Tk()
x = IntVar()
x.set(value=1)
def actualiza_radio(value):
Label(root, text=value).grid(row=3)
titulo = Label(root,text="Seleccione una opción").grid(row=0)
Radiobutton(root,
text="Esta es la primera opción.",
value=1,
variable=x).grid(row=1)
Radiobutton(root,
text="Esta es la segunda opción.",
value=2,
variable=x).grid(row=2)
boton_envia = Button(root,
text="Enviar",
command=lambda: actualiza_radio(x.get())).grid(row=4)
root.mainloop()
Con esto, se actualiza el estado de la opción seleccionada, así podemos enviar el valor correspondiente a nuestro programa al pulsar un botón.
Las variables de control de tipo StringVar de Tkinter
Veamos algo bastante interesante, las variables de control StringVar.
Estas variables pueden ser utilizadas para enviar datos de tipo string al pulsar el botón, en lugar de enviar el número de opción.
from tkinter import *
root = Tk()
def actualiza_radio(value):
Label(root, text=value).pack()
titulo = Label(root,text="Seleccione una opción").pack()
opciones = [["Color Rojo","rojo"],
["Color Azul","azul"],
["Color verde","verde"],
["Color amarillo","amarillo"]]
colores = StringVar()
colores.set("rojo")
for opcion, valor in opciones:
Radiobutton(root, text=opcion, value=valor, variable=colores).pack()
boton_envia = Button(root,
text="Enviar",
command=lambda: actualiza_radio(colores.get())).pack()
root.mainloop()
El resultado es que podemos ir enviando cualquier valor de tipo string. Si utilizamos bases de datos, todo esto será muy útil.
Lo veremos en los próximos capítulos.
Comentarios
Si te quedan dudas sobre el temario, sobre Tkinter, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.