viernes, 8 de abril de 2011

Python: GUI con Tkinter Hola Mundo version 2

Ya mostré un hola mundo muy simple que para ir entendiendo como se usa Tkinter esta mas que bueno; En muchas ocasiones necesitaremos crear clases, para esto implementaremos una clase y realizaremos la versión 2 del clásico Hola Mundo!.


Copio y pego el código del archivo holamundo2.py

from Tkinter import *
class App:
    def __init__(self, master):
        frame = Frame(master)
        frame.pack()
        self.button = Button(frame, text="QUIT", fg="red", command=frame.quit)
        self.button.pack(side=LEFT)
        self.hi_there = Button(frame, text="Hello", command=self.say_hi)
        self.hi_there.pack(side=LEFT)
    def say_hi(self):
        print "hi there, everyone!"
root = Tk()
app = App(root)
root.mainloop()
Se crea una clase App de la siguiente manera class App, seguido de esto iniciamos la construcción de nuestra ventana, el constructor (the__init__method) es llamado con el widget padre (master), el constructor empieza creando un widget Frame, es el que contendrá nuestros demás widgets del script, después de esto se muestra el frame con frame.pack().

A continuación se crean dos botones hijos de Frame como se ve en el siguiente código:

 self.button = Button(frame, text="QUIT", fg="red", command=frame.quit)
 self.button.pack(side=LEFT)

El primero de ellos  self.button se crea a partir del widget padre frame, con el texto QUIT seguido de fg(foregorund) con un valor igual a rojo, y por ultimo se le asigna una función o comando que destruye el frame padre. La segunda parte  self.button.pack(side=LEFT) con el método pack se muestra dicho botón y se alinea a la izquierda del frame.

  self.hi_there = Button(frame, text="Hello", command=self.say_hi)
  self.hi_there.pack(side=LEFT)

El segundo botón es casi igual al anterior solo que este como comando o función llama a sel.say_hi que es un método que contiene dentro de el "hi there, everyone!", seguido de esto con la función pack se muestra alineado a la izquierda después de el primer botón. (Los botones en este caso se recorren una posición a la derecha y quedan lo mas a la izquierda posible).

Cuando se presiona el botón hello llama a esta pequeña función 

 def say_hi(self):
        print "hi there, everyone!"
La cual imprime en la terminal el texto entre comillas.

Finalmente creamos un widget padre TK, seguido de una instancia de la clase APP utilizando el widget root como su padre.

Al finalizar el método root.mainloop(), lo que logro entender ahora es que es un método que entra en un ciclo de repetición esperando a que root el widget padre sea destruido, si esto sucede el método es verdadero y se procede a destruir todo.

Por ultimo muestro como se ve el pequeño script corriendo muestro cuando hago click en el botón hello se genera el hi there, everyone!, en su defecto si se presiona en la X de la ventana o el botón Quit la ventanita se destruye..

No hay comentarios:

Publicar un comentario