Google+ Seguidores

jueves, 5 de octubre de 2017

Checkbox con Python y Tkinter

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

2 comentarios :
Write comentarios
  1. Pero para proyectos grandes no conviene es más extenso pyqt5

    ResponderEliminar
  2. Si, estoy de acuerdo contigo, pero es importante conocer todo los recursos, nunca se sabe cuando podremos necesitarlos :D

    ResponderEliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

Powered by Blogger .