Saturday, 25 March 2017
Tkinter

TkInter

Es un módulo para python utilizado para hacer interfaces gráficas. Puede ser bajado de la internet, para ello utilize un buscador y coloque la palabra "tkinter3000". Baje el archivo y ejecútelo. Se recomienda reiniciar la máquina. Se recomienda instalar primero el programa de desarrollo "geany". Geany que puede ser bajado de la internet. Luego se instala y finalmente se debe configurar la variable de entorno path del Windows.  
Al igual que todos los módulos se accesa a través de "import":

 import Tkinter

 
O bien:
 
from Tkinter import *

 

Programa básico para generación de una interfaz gráfica utilizando el módulo de TkInter:

 
# File: hello1.py
 
 
from Tkinter import *
 
 
root = Tk()
 
 
w = Label(root, text="Hello, world!")
 
 
w.pack()
 
root.mainloop()



Interfaz gráfica Tk- generación de etiquetas

En este programa se genera un interfaz gráfica, basada en objeto de la clase Tk que ayudará al estudiante a comprender el uso de la sintáxis en la programación con clases.

#!/usr/local/bin/python
from Tkinter import *
import tkFont
class Application(Frame):

def __init__(self, master=None): # constructor
Frame.__init__(self, master) #generando un marco
self.grid() #empaquetando
self.createWidgets()# llamando a un metodo que crea una interfaz a partir del frame.
def createWidgets(self):
#generacion del contenido de la interfaz
self.quitButton = Button ( self, text="Quit", command=self.quit ) #Agregando un boton con
#evento
self.quitButton.grid() #empaquetar boton
#generando un tipo de letra para una etiqueta
helv36 = tkFont.Font ( family="Helvetica", size=36, weight="bold")
# nueva etiqueta 
self.etiqueta1 = Label(self,text="etiqueta1",font=helv36, fg="red")
#colocando la etiqueta en la grid 
self.etiqueta1.grid(row=1, column=0, columnspan=2, rowspan=2)
#generando otra etiqueta 
self.etiqueta2 = Label(self,text="etiqueta2")
self.etiqueta2.grid(row=0,column=1)

 

#**********inicio del main**********************
app = Application() # generando una instancia de la clase Application
app.master.title("Ejemplo de aplicacion") # definiendo titulo de la ventana principal
app.mainloop() # a la espera de eventos


 
Explicación:

from Tkinter import * 
 
class App:
 
 
def __init__(self, master):
 
 
 
# se genera una clase con el constructor (_init_) se utiliza como contenedor principal a master.
 
 
 
    frame = Frame(master)
 
 
 
    frame.pack()
 
 
 
    # se genera un frame para agregarlo a master
 
 
 
    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)
 
 
 
    # se generan dos botones y se agregan a al widget padre (frame).
 
 
 
def say_hi(self):
 
 
 
print "hi there, everyone!"
 
 
 
# se crea el método say_hi(self) del segundo botón.
 
 
root = Tk()
 
 
app = App(root)
 
 
root.mainloop()
 
 
Se genera el proceso de applicación y espera de eventos.

 
Otros ejemplos:

 
 
a) Generando una ventana con etiquetas.

 
fromTkinter import *
 
 
root = Tk()
 
 
 
w = Label(root, text="Red", bg="red", fg="white")
 
 
 
w.pack(side=LEFT)
 
 
 
w = Label(root, text="Green", bg="green", fg="black")
 
 
 
w.pack(side=LEFT)
 
 
 
w = Label(root, text="Blue", bg="blue", fg="white")
 
 
 
w.pack(side=LEFT)
 
 
mainloop()

 

b) Para dibujar en el centro un rectángulo y í­neas que nace de los vértices de la ventana hacia los vértices del rectángulo dibujado relleno de color azul. Se anexa textos y administración de tiempo.

 
 
import time
from Tkinter import *
def pora():
    w.create_text(100,45,text="Dibu", fill="white", font=("Helvectica", "16"))
master = Tk()
master.title("Dibujando")


 
w = Canvas(master, width=200, height=200)
#helv36 = tkFont.Font ( family="Helvetica",    size=36, weight="bold")  
 
w.pack()


w.create_line(0, 0, 200, 100)
 

w.create_line(0, 100, 200, 0, fill="red", dash=(4, 4))
 

w.create_rectangle(50, 25, 150, 75, fill="blue")
w.create_text(100,45,text="", fill="white", font=("Helvectica", "16"))
tel=w.create_text(100,140,text="www.lomasdeterciopelo.co.cr",fill="brown", font=("Helvectica", "10", "bold italic") )
master.after(5000,pora)
mainloop()
 
 

 

 
c)Utilización del grid para colocar objetos.

 
 
from Tkinter import *
 
root = Tk()
 
 
w = Label(root, text="Additive:")
 
 
w.grid(sticky=E)
 
 
w = Label(root, text="Subtractive:")
 
 
w.grid(sticky=E)
 
 
w = Label(root, text="Cyan", bg="cyan", height=2)
 
 
w.grid(row=1, column=1)
 
 
w = Label(root, text="Magenta", bg="magenta", fg="white")
 
 
w.grid(row=1, column=2)
 
 
w = Label(root, text="Yellow", bg="yellow", height=2)
 
 
w.grid(row=1, column=3)
 
 
w = Label(root, text="Red", bg="red", fg="white", height=2)
 
 
w.grid(row=0, column=1)
 
 
w = Label(root, text="Green", bg="green", height=3)
 
 
w.grid(row=0, column=2)
 
 
w = Label(root, text="Blue", bg="blue", fg="white")
 
 
w.grid(row=0, column=3)
 
 
mainloop()

{backbutton}