Curso de TKINTER desde cero

El widget Radiobutton() de Tkinter y las variables de control

Capítulo 7: Formularios con el widget Radiobutton() y variables de control

En este capítulo veremos cómo añadir el tipo de widget Radiobutton() y las variables de control de Tkinter. Este tipo de formulario nos mostrará una serie de opciones y solo podremos seleccionar una de las disponibles.

Antes de empezar viendo cómo poner estos Radiobutton() tenemos que saber lo que son las variables de control de Tkinter.

¿Qué son las variables de control de Tkinter?

Las variables de control de Tkinter son objetos especiales asociados a los widgets de Tkinter para almacenar sus valores. De esta forma vamos a poder trabajar correctamente con los diferentes tipos de formularios que tiene.
Tenemos variables de tipo numérico para los enteros (IntVar) y DoubleVar para los floats. También tenemos una variable para los strings llamada StringVar y otra para los booleanos, BooleanVar.

Las variables de control las vamos a utilizar para conectar también varios widgets del mismo tipo. Es decir si tenemos varias opciones Radiobutton() podremos relacionar las posibles opciones, creando así un grupo de widgets.

Veamos un ejemplo práctico, voy a escribir dos Radiobutton() y los voy a relacionar.

>
from tkinter import *

root = Tk()

x = IntVar()

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)

root.mainloop()

Ya tenemos dos opciones. Ahora sí lo ejecutamos no va a hacer nada por el momento, pero ya podemos marcar una de las dos opciones, puesto que en este tipo de formulario eso es lo que debe ocurrir.
En este momento si hago clic en la opción número uno, lo que va a pasar es que en la x está almacenando el valor integer 1. Si pulso la segunda opción se almacena el número 2. Sabiendo esto ya podemos hacer otro tipo de operaciones.

Cómo puedes observar en el código, tengo una variable x con un valor IntVar(), lo que la convierte en variable de control de Tkinter de tipo integer.

Para establecer la relación lo hacemos con el atributo variable de cada Radiobutton().

Radiobutton Tkinter Radiobutton Tkinter Radiobutton Tkinter

Establecer opción por defecto con Radiobutton()

Si quieres mostrar una opción por defecto lo puedes hacer con un set. Por defecto, saldrá esa opción marcada.
Añade este set debajo de la declaración de la variable x:

x.set(value=1)

No obstante, esto nos va a dar un problema, y es que al hacer un set, independientemente de la opción que marquemos, va a ser en el programa siempre la 1. Puedo demostrarlo con get:

opcion_set = Label(root, text=x.get()).grid(row=3)

Pese a estar marcando la segunda opción, por culpa del set, siempre se queda la opción 1.

Radiobutton Tkinter

Para que se actualice la opción seleccionada en cada momento, deberás crear una función que sea capaz de actualizarla. Simplemente pones el label dentro de la función:

def actualiza(value):
		Label(root, text=value).grid(row=3)

Para ejecutar esta función, le añadimos un command a cada Radiobutton():

Radiobutton(root,
	text="Esta es la primera opción.",
	value=1,
	variable=x, command=lambda: actualiza(x.get())).grid(row=1)

Radiobutton(root,
	text="Esta es la segunda opción.",
	value=2,
	variable=x, command=lambda: actualiza(x.get())).grid(row=2)

Ahora, cada opción va a enviar su valor correspondiente.

Radiobutton Tkinter Radiobutton Tkinter

Dejo el capítulo aquí y en el siguiente veremos un poco más sobre los Radiobutton().

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.

Programación Fácil YouTube

Suscríbete

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.