PyCharm

Pycharm es un fantástico IDE para Python.
Cuenta con versión gratuita y versión de pago. Tú eliges.
Este es el IDE que utilizo en el curso
Ir a la página de descargaEn este capítulo veremos cómo añadir el tipo de widget Radiobutton()
. Este tipo de formulario nos mostrará una serie de opciones y solo podremos seleccionar una de las disponibles.
Pero antes de empezar viendo cómo poner estos Radiobutton()
tenemos que saber lo que 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()
.
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
.
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.
Dejo el capítulo aquí y en el siguiente veremos un poco más sobre los Radiobutton()
.
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.
Si te quedan dudas sobre el temario, sobre Python, 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.