Interfaces gráficas IV

Botones de radio

Los botones de radio son widgets que permiten ingresar solo una opción al seleccionar de un conjunto a través de una interfaz de circulos vacíos en donde al seleccionar uno de ellos dicho círculo queda relleno con un punto haciendo que cualquier otro widget de ese grupo se deseleccione, por ejemplo masculino o femenino, un dia de la semana, un mes del año, etc.

Ejemplo:

from tkinter import *

frmRaiz = Tk()

varGenero=IntVar()

Radiobutton(frmRaiz, text='Masculino',variable=varGenero,value=0).pack()
Radiobutton(frmRaiz, text='Femenino',variable=varGenero,value=1).pack()

frmRaiz.mainloop()

Resultado:


Ampliando un poco mas la funcionalidad del script podemos incluir la opción que muestre el género seleccionado en una etiqueta:


from tkinter import *

frmRaiz = Tk()

varGenero=IntVar()
def muestraValor():
    #print('Género', varGenero.get())
    if varGenero.get()==0:
        lblEtiqueta.config(text='Se ha seleccionado el género masculino')
    else:
        lblEtiqueta.config(text='Se ha seleccionado el género femenino ')
Label(frmRaiz,text='Género').pack()

Radiobutton(frmRaiz, text='Masculino',variable=varGenero,value=0,command=muestraValor).pack()
Radiobutton(frmRaiz, text='Femenino',variable=varGenero,value=1,command=muestraValor).pack()
lblEtiqueta = Label(frmRaiz,text='No hay género elegido aún')
lblEtiqueta.pack()
frmRaiz.mainloop()

Resultado haciendo click en la opción "Femenino":


Casillas de verificación

Las casillas de verifición son widgets que permiten marcar o desmarcar opciones en un formulario, la diferencia con los botones de radio está en que las casillas de verificación permiten marcar múltiples opciones a la vez.

Veamos el siguiente ejemplo: 

from tkinter import *

frmRaiz = Tk()

Label(frmRaiz,text='Seleccione materia a registrar').pack()

check1=Checkbutton(frmRaiz,text='Lengua').pack()
check2=Checkbutton(frmRaiz,text='Matemáticas').pack()
check3=Checkbutton(frmRaiz,text='Biología').pack()

frmRaiz.mainloop()

Resultado:


Como podemos ver la sintaxis de las cajas de verificación es muy similar a los botones de radio, con la diferencia que las casillas de verificación permite seleccionar varios items a la vez.

El siguiente paso es darle funcionalidad a los checkbox, veamos el siguiente ejemplo:

from tkinter import *

frmRaiz = Tk()
frmRaiz.title='Ejemplo de cuadros de selección'
frmCuadro = Frame(frmRaiz)
frmCuadro.pack()

iLengua=IntVar()
iMatematicas=IntVar()
iBiologia=IntVar()

def opMateria():
    opEscogida='Materias seleccionadas: '
    if iLengua.get()==1:
        opEscogida+=' lenguaje'
    if iMatematicas.get()==1:
        opEscogida+=' matematicas'
    if iBiologia.get()==1:
        opEscogida+=' biologia'

    lblMaterias.config(text=opEscogida)

Label(frmCuadro,text='Seleccione materia a registrar',width=50).pack()

check1=Checkbutton(frmCuadro,text='Lengua',variable=iLengua, onvalue=1,offvalue=0,command=opMateria).pack()
check2=Checkbutton(frmCuadro,text='Matemáticas', variable=iMatematicas, onvalue=1,offvalue=0,command=opMateria).pack()
check3=Checkbutton(frmCuadro,text='Biología', variable=iBiologia, onvalue=1,offvalue=0,command=opMateria).pack()

lblMaterias=Label(frmRaiz)
lblMaterias.pack()

frmRaiz.mainloop()

Resultado:



Menú

En python los menúes son widgets también. Veamos el siguiente ejemplo en donde le agregamos un menú básico al programa que venimos realizando hasta ahora:

from tkinter import *

frmRaiz = Tk()
frmRaiz.title='Ejemplo de cuadros de selección'
frmCuadro = Frame(frmRaiz)
frmCuadro.pack()

mnuMenuPpal = Menu(frmRaiz)
frmRaiz.config(menu=mnuMenuPpal)

mnuArchivo = Menu(mnuMenuPpal,tearoff=0)
mnuArchivo.add_command(label='Cerrar')
mnuArchivo.add_separator()
mnuArchivo.add_command(label='Salir')

mnuAyuda = Menu(mnuMenuPpal)
mnuMenuPpal.add_cascade(label='Archivo',menu=mnuArchivo)
mnuMenuPpal.add_cascade(label='Ayuda',menu=mnuAyuda)

iLengua=IntVar()
iMatematicas=IntVar()
iBiologia=IntVar()

def opMateria():
    opEscogida='Materias seleccionadas: '
    if iLengua.get()==1:
        opEscogida+=' lenguaje'
    if iMatematicas.get()==1:
        opEscogida+=' matematicas'
    if iBiologia.get()==1:
        opEscogida+=' biologia'

    lblMaterias.config(text=opEscogida)

Label(frmCuadro,text='Seleccione materia a registrar',width=50).pack()

check1=Checkbutton(frmCuadro,text='Lengua',variable=iLengua, onvalue=1,offvalue=0,command=opMateria).pack()
check2=Checkbutton(frmCuadro,text='Matemáticas', variable=iMatematicas, onvalue=1,offvalue=0,command=opMateria).pack()
check3=Checkbutton(frmCuadro,text='Biología', variable=iBiologia, onvalue=1,offvalue=0,command=opMateria).pack()

lblMaterias=Label(frmRaiz)
lblMaterias.pack()

frmRaiz.mainloop()

Resultado:


Como podemos observar se ha añadido el menú con las opciones especificadas.



Comentarios

Entradas populares