PROGRAMACION II
APLICACIONES DE ESCRITORIO CON METODO TKINTER
Dr. Rogelio Mamani Ramos, Ph.D.
APLICACIONES DE ESCRITORIO CON TKINTER
Tk es una herramienta para desarrollar aplicaciones de escritorio
multiplataforma, esto es, aplicaciones nativas con una interfaz grafica
para sistemas operativos, Windows, Linux, Mac y otros. Técnicamente,
Tk es una biblioteca de código abierto escrita en C y desarrollada en sus
orígenes para el lenguaje de programación Tcl; de ahí que usualmente
nos referimos a ella como Tcl/Tk. Desde sus primeras versiones Python
incluye en su biblioteca o libreria estándar el modulo tkinter que
permite interactuar con Tk para desarrollar aplicaciones de escritorio
en Python, de modo que cualquier programador con una mínima de
Python puede comenzar rápidamente aplicaciones graficas
profesionales.
Desarrollo de aplicaciones graficas
• Desarrollar aplicaciones de escritorio empleando ventanas y controles
tales como cajas de texto, etiquetas, botones, listas desplegables,
checkbox, menus, ect. En Python
• Tkinter es un modulo Python que nos facilita el desarrollo de las
GUI,esta disponible en la instalación por defecto, soporta diversas
plataformas como: Windows, Linux, Mac, y además es muy fácil de
usar.
Clase Tk y algunos metodos
• Tk() clase para crear una ventana principal donde añadir los widgets.
• pack() ubica los widgets en un a posición que podemos cambiar a
través de los correspondientes atributos.
• mainloop() inicia el bucle de mensajes, aquí se monitorea la
interacción del usuario a través del ratón o teclado con la aplicación,
cuando se produzca un evento recibiremos la notificación
correspondiente y podremos responder a dicho evento, por ejemplo:
el usuario hace clic sobre el botón cerrar, respondemos cerrando la
aplicación.
Configurar widgets tkinter
• Tres formas: fg color de texto, bg color de fondo
• Constructor:
• miBoton=Button(self,fg=“red”,bg=“blue”)
• Metodo config:
• miBoton.config(fg=“red”,bg=“blue”)
• Accesando a la propiedad(como un diccionario clave/valor)
• miBoton[“fg”]=“red”
• miBoton[“bg”]=“blue”
Utilizar la extensión .pyw
• Normalmente los script Python son almacenados con la extensión .py,
para ejecutar este script, en Windows por ejemplo necesitamos abrir
una consola de comandos y ejecutar lo siguiente: Python
hola_mundo.py, si deseamos ejecutar una aplicación con GUI por lo
general no se requiere enviar argumentos desde la consola, por lo
que, si cambiamos la extensión a .pyw la aplicación se ejecutara
automáticamente al hacer doble clic sobre ella.
EJEMPLO mi primera ventana
#importar modulo tkinter
import tkinter
ventana = tkinter.Tk()
ventana.title("Ventana") # titulo
ventana.geometry("400x300") #tamaño de la ventana
etiqueta = tkinter.Label(ventana, text="Hola Mundo") #colocar etiqueta en ventana ,b
etiqueta.pack() #posecionamos objetos en ventana
#etiqueta.pack(side=tkinter.BOTTOM) # msg abajo
#etiqueta.pack(side=tkinter.RIGHT) # msg costado derecho
#etiqueta.pack(fill=tkinter.X)
ventana.mainloop()
CREAR BOTON
# crear botom
import tkinter
ventana = tkinter.Tk()
ventana.title("Ventana") # titulo
ventana.geometry("300x300")
def saludo():
print("Hola juan")
boton1 = tkinter.Button(ventana,text = "Presiona",command=saludo)
#boton1 = tkinter.Button(ventana,text = "Presiona",command=lambda:print("hola"))#sin crear funcion
#boton1 = tkinter.Button(ventana,text = "Presiona",padx=40,pady=30)
boton1.pack()
ventana.mainloop()
CREAR CAJA DE TEXTO
# caja de texto
import tkinter
ventana = tkinter.Tk()
ventana.title("Ventana") # titulo
ventana.geometry("400x300")
cajatexto = tkinter.Entry(ventana,font="Helvitica 20")
cajatexto.pack()
# para poner texto en consola definir una funcion
#def textocaja():
# texto=cajatexto.get()
# print(texto)
# desplegar un texto en una etiqueta
etiqueta=tkinter.Label(ventana)
etiqueta.pack()
def textocaja():
texto=cajatexto.get()
etiqueta["text"]=texto
boton1 = tkinter.Button(ventana,text="Aceptar",command=textocaja)
boton1.pack()
ventana.mainloop()
METODO GRID
# metodo grid, divide en filas y columnas
import tkinter
ventana = tkinter.Tk()
ventana.title("grid")
ventana.geometry("300x300")
boton1 = tkinter.Button(ventana,text="boton1",width=10,height=5)
boton2 = tkinter.Button(ventana,text="boton2",width=10,height=5)
boton3 = tkinter.Button(ventana,text="boton3",width=10,height=5)
boton1.grid(row=0,column=0)
boton2.grid(row=0,column=1)
boton3.grid(row=0,column=2)
ventana.mainloop()
#PROGRAMA QUE CONVIERTE DE MILLAS A KM
from tkinter import *
# funcionalidad para convertir
def convertir(): # convertir de millas a Km
mi = float(input.get()) #recupera el valor de entry
km = mi*1.60934
label3.config(text=km)
#print(km)
#variable se convierte en un objeto
ventana = Tk()
ventana.title("Convertidor") # titulo
ventana.minsize(width=400, height=400) #tamaño ancho y alto
ventana.config(padx=20,pady=20)
canvas = Canvas(width=100, height=100) # colocar imagen.png con metodo canvas
logo_img = PhotoImage(file="mi-km.png")# cargar imagen en otra variable
canvas.create_image(100,100,image=logo_img)
canvas.grid(row=0, column=1)#determinar fila columna
input = Entry(width=10, font=("Arial",14))#generar ventana de entrada
input.insert(END, string="0")
input.grid(row=1, column=1)# especificar el lugar fila columna
label1 = Label(text="Millas", font=("Arial",14))
label1.grid(row=1, column=2)
label2 = Label(text="Es igual a : ", font=("Arial",14))
label2.grid(row=2, column=0)
label3 = Label(text="0", font=("Arial",14))
label3.grid(row=2, column=1)
label4 = Label(text="Km ", font=("Arial",14))
label4.grid(row=2, column=2)
button = Button(text="Calcular", font=("Arial",14),command=convertir)#boton calcular
button.grid(row=3, column=1)
ventana.mainloop() #genera una ventana