Saltar a contenido
 No os perd谩is mi futuro contenido, seguidme en y Youtube 馃榿

Widget Checkbutton (Seleccionable)

Con los radiobutton vimos que el usuario puede marcar una opci贸n de entre varias, pero si queremos simplemente proponer una 煤nica opci贸n es mejor utilizar un bot贸n de selecci贸n. Son bastante parecidos. Vamos a crear un par de checkbuttons para por ejemplo, pedir a un usuario como quiere que le sirvan un caf茅, 茅l tendr谩 que marcar si quiere leche, y tambi茅n si quiere az煤car:

Note

from tkinter import *

root = Tk()
root.config(bd=15)

leche = IntVar()      # 1 si, 0 no
azucar = IntVar()    # 1 si, 0 no

Label(root,text="驴C贸mo quieres el caf茅?").pack()
Checkbutton(root, text="Con leche", variable=leche, 
            onvalue=1, offvalue=0).pack()
Checkbutton(root, text="Con az煤car",variable=leche, 
            onvalue=1, offvalue=0).pack()

root.mainloop()

Aprovechando que tenemos una imagen, y para practicar un poco la distribuci贸n, podr铆amos mejorar un poco la presentaci贸n del formulario:

Note

from tkinter import *

root = Tk()
root.config(bd=15)

leche = IntVar()
azucar = IntVar()

imagen = PhotoImage(file="imagen.gif")
Label(root, image=imagen).pack(side=LEFT)

frame = Frame(root).pack(side=RIGHT)
Label(frame, text="驴C贸mo quieres el caf茅?\n").pack(anchor=W)
Checkbutton(frame, text="Con leche", variable=leche, 
            onvalue=1, offvalue=0).pack(anchor=W)
Checkbutton(frame, text="Con az煤car", variable=leche, 
            onvalue=1, offvalue=0).pack(anchor=W)

root.mainloop()

Bien, entonces 驴c贸mo podemos recuperar los valores de nuestros botones de selecci贸n? Podr铆amos crear una funci贸n y a帽adir un comando a los checkbutton para mostrar el resumen de nuestro caf茅 en una label:

Note

def selec():
    cadena = ""

    if (leche.get()): cadena += "Con leche"
    else: cadena += "Sin leche"

    if (azucar.get()): cadena += " y con az煤car"
    else: cadena += " y sin az煤car"

    monitor.config(text=cadena)

...

monitor = Label(frame)
monitor.pack()

C贸digo final:

Note

from tkinter import *

def seleccionar():
    cadena = ""
    if (leche.get()):
        cadena += "Con leche"
    else:
        cadena += "Sin leche"

    if (azucar.get()):
        cadena += " y con az煤car"
    else:
        cadena += " y sin az煤car"

    monitor.config(text=cadena)

# Configuraci贸n de la ra铆z
root = Tk()
root.title("Cafeter铆a")
root.config(bd=15)

leche = IntVar()    # 1 si, 0 no
azucar = IntVar()   # 1 si, 0 no

imagen = PhotoImage(file="imagen.gif")
Label(root, image=imagen).pack(side="left")

frame = Frame(root)
frame.pack(side="left")

Label(frame, text="驴C贸mo quieres el caf茅?").pack(anchor="w")
Checkbutton(frame, text="Con leche", variable=leche, onvalue=1, 
            offvalue=0, command=seleccionar).pack(anchor="w")
Checkbutton(frame, text="Con az煤car", variable=azucar, onvalue=1, 
            offvalue=0, command=seleccionar).pack(anchor="w")

monitor = Label(frame)
monitor.pack()

# Finalmente bucle de la aplicaci贸n
root.mainloop()

脷ltima edici贸n: 4 de Octubre de 2018