Checkbox con Python y Tkinter

Índice

    Introducción:

    La mayoría de nosotros conocemos el modulo Tkinter, el cual nos permite crear Interfaces Gráficas con los widget típicos, como lo son los botones, cajas de textos, menús, entre otros. Lo mejor de este modulo es que esta en la librería estándar de Python, así que no tenemos que descargar archivos externos.

    En el día de hoy, crearemos una pequeña ventana con un "interruptor" (Checkbox), el cual a medida que cambie su estado lo mostrara en la consola, si se preguntan de que estados hablo, me refiero a que si el "interruptor" esta activo, en la consola mostraremos su estado booleano el cual seria True, si el "interruptor" esta desactivado haremos lo mismos, en este caso el valor booleano seria False.

    Creando nuestro interruptor.

    Muy bien, comencemos la creación de nuestra ventana gráfica, paso a paso.


    Lo primero que haremos sera importar el modulo tkinter, al cual nos referiremos al el como tk, eso lo asignamos con "as".


    import tkinter as tk

    Listo, ya tenemos acceso a los metodos de tkinter, lo siguiente que haremos sera crear una clase a la cual llamare "Application", nuestra clase "Application", heredara métodos y características de la clase "Frame" de tkinter.
    Si no etas familiarizado con la programación orientada a objetos, te sugiero que leas un poco al respecto.

    class Application(tk.Frame):

    def __init__(self, main_window):
    super().__init__(main_window)


    #Definimos el titulo de main_window (Nuestra ventana principal), para esto usamos "title".
    main_window.title("Checkbox con Python y Tkinter")


    #Definimos el tamaño de nuestra ventana principal.
    self.place(width=300, height=200)


    Ya que hallamos especificado las características básicas de nuestra ventana principal, procederemos a la creación de nuestro checkbox.


    Para poder obtener acceso al estado de un checkbox (lo cual es justamente lo que queremos, ya que vamos a mostrarlo en pantalla) primero es necesario crear una variable que pueda almacenar su valor. Utilizamos tk.BooleanVar, que representará el estado “activado” como True y “desactivado” como False.

    self.value = tk.BooleanVar(self)



    Creamos la intacncia del objeto Checkbutton del modulo tkinter, al cual le asignaremos
    3 argumentos, los cuales son:
    text (texto del chcekbutton),
    variable (Variable en la cual guardaremos su estado booleano) y
    command (funcion que se llamara al hacer click sobre el checkbutton).




    self.checkbox = tk.Checkbutton(self,
    text="Interruptor",
    variable=self.value,
    command=self.clicked)

    Listo, tenemos nuestro checkbutton preparado, ahora nos falta colocarlo en
    una posición determinada, eso lo logramos con place, pasandole como argumento

    su posición en el eje x, y en el eje y.


    self.checkbox.place(x=40, y=70)



    Si se fijaron, en el argumento command del checkbutton colocamos una función llamada clicked, la cual no existe, pero ahora la definiremos, esta función simplemente nos mostrara el valor del checkbutton en la consola, veamos como se hace:


    def clicked(self):
    print(self.value.get())

    Muy bien, nuestra clase Application ya esta lista para la acción, fuera de nuestra clase crearemos la instancia del objeto Tk, creamos una variable llamada app la cual contendrá la clase Application y le pasaremos el objeto Tk, luego con ayuda del método mainloop haremos que la ventana salga en pantalla, veamos como queda.


    main_window = tk.Tk()
    app = Application(main_window)
    app.mainloop()

    Muy bien, luego de finalizar todos los pasos, procedemos a ejecutar el código,  el resultado debería quedar algo así:





    Bueno, eso ha sido todo, lo hicimos de una forma muy fácil y sencilla, ya que de tu parte experimentar un poco con este pequeño ejemplo, si tienes dudas con gusto la responderé, gracias por leer :D.



    Bodigo completo en mi repositorio de GitHub: Código Completo

    1. Anónimo dice:

      Pero para proyectos grandes no conviene es más extenso pyqt5

    2. Luis Salcedo dice:

      Si, estoy de acuerdo contigo, pero es importante conocer todo los recursos, nunca se sabe cuando podremos necesitarlos 😀

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Te has suscrito correctamente al boletín

    Se produjo un error al intentar enviar tu solicitud. Inténtalo de nuevo.

    Mi Diario Python will use the information you provide on this form to be in touch with you and to provide updates and marketing.