Sintaxis de programa.
# !/usr/bin/env python# # -*- coding: utf-8 -*- # programa que calcula el interés anual import sys from Tkinter import * import tkMessageBox def interes(): v1 = int(ent1.get()) v2 = int(ent2.get()) v3 = int(ent3.get()) r = v1 * v2 / 100 g = (r * v3) f = g + v1 print "Cuando pasen", v3, "años, con un interes de", v2, " usted habrá generado", f, "pesos" v = Tk() v.title("Interes") v.geometry("400x250") vp = Frame(v) vp.grid(column=0, row=0, padx=(50, 50), pady=(10, 10)) vp.columnconfigure(0, weight=1) vp.rowconfigure(0, weight=1) e1 = Label(vp, text="Pesos:") e1.grid(row=2, column=4, padx=(20, 20), pady=(20, 20)) e2 = Label(vp, text="Interes:") e2.grid(row=3, column=4, padx=(20, 20), pady=(20, 20)) e3 = Label(vp, text="Años:") e3.grid(row=4, column=4, padx=(20, 20), pady=(20, 20)) val1 = "" ent1 = Entry(vp, width=12, textvariable=val1) ent1.grid(row=2, column=5) val2 = "" ent2 = Entry(vp, width=12, textvariable=val2) ent2.grid(row=3, column=5) val3 = "" ent3 = Entry(vp, width=12, textvariable=val3) ent3.grid(row=4, column=5) b1 = Button(vp, text="Calcular", command=interes) b1.grid(row=5, column=5, padx=(20, 20), pady=(20, 20)) v.mainloop()
Lo que podemos observar en este codigo es que tenemos un diseño sencillo para la implementacion de el calculo de intereses al año.
Primeramente, dentro de los objetos de tipo tkinter que tenemos contamos con 3 entry o cajas de texto para capturar los valores de :Interes,años y pesos.
De igual manera, tenemos un boton que al presionarlo va a la funcion creada en lineas mas arriba de la sintaxis. Todo esto, dentro de nuestro objeto Tk y su frame.
En cuanto a la funcion, tomamos los valores de las cajas de texto con la funcion ".get()", almacenando su contenido en una variable que nos servira para calcular lo deseado. A continuacion, solo le realiza la operacion basica para el caculo de intereses y termina por imprimir un mensaje con esa informacion en consola.
Corrida del programa.
Ejemplo 2: Gif con boton
Sintaxis del programa:
# Programa.- que toma un archivo GIF y lo muestra # -*- coding: utf-8 -*- from Tkinter import * ventana = Tk() ventana.geometry('400x400') ventana.config(bg="lightpink") ventana.title("Mostrando y ocultando un boton con una imagen") def btn_hide(): if b1.winfo_ismapped(): b1.place_forget() b2.configure(text="Mostrar carita", width=15) else: b1.place(x=70, y=50) b2.configure(text="Ocultar carita", width=15) imgBoton = PhotoImage(file="kda.gif") b1 = Button(ventana, text="Boton 1", image=imgBoton, fg="pink", width=200) b1.place(x=90, y=50) b2 = Button(ventana, text="Ocultar carita", command=btn_hide, fg="black", width=15) b2.place(x=130, y=280) ventana.mainloop()
Corrida en pantalla del programa:
Al corres el programa, nos muestra la pantalla en un colo solido y con el boton que debe mostrar la imagen que tenga en codigo.(No es necesario que sea la misma, cualquier imagen .gif puede mostrarse. Si vas a hacer esto, asegurate que tu imagen este en la misma carpeta que tu programa).
Posteriormente, al presionar el boton nos mostrar la imagen que tenemos cargada en la parte superior de la ventana tk.
Ejemplo 3: Calendario
Sintaxis del programa:
#!/usr/bin/env phyton #- * - coding: utf - 8 -*- #Simple calendario con tkinter import calendar import Tkinter as tk import datetime # Obtenemos los valores del ano y mes a mostrar ano = datetime.date.today ().year mes = datetime.date.today ().month def writeCalendar(ano, mes): # Asignamos el ano y mes al calendario str1 = calendar.month (ano, mes) label1.configure (text=str1) def mesAnterior(): global mes, ano mes -= 1 if ano == 0: mes = 12 ano -= 1 writeCalendar (ano, mes) def mesSiguiente(): global mes, ano mes += 1 if mes == 13: mes = 1 ano += 1 writeCalendar (ano, mes) root = tk.Tk () root.title ("Calendario") # Lo posicionamos en un label label1 = tk.Label (root, text="", font=('courier', 40, 'bold'), bg='darkred', justify=tk.LEFT) label1.grid (row=1, column=1) # ponemos los botones dentro un Frame frame = tk.Frame (root, bd=5) anterior = tk.Button (frame, text="Anterior", command=mesAnterior) anterior.grid (row=1, column=1, sticky=tk.W) siguiente = tk.Button (frame, text="Siguiente", command=mesSiguiente) siguiente.grid (row=1, column=2) frame.grid (row=2, column=1) writeCalendar (ano, mes) # ejecutamos el evento loop root.mainloop ()
Corrida en pantalla:
Gracias a las librerias que se importan en este programa, es mas sencillo tomar la fecha y fabricar asi el calendario de esta manera. Todo el diseño del calendario se encuentra dentro de una label, la cual dependiendo el boton que se presione va cambiando el mes y los dias de este a sus correspondientes.
Ejemplo 4: Programa que encripta y desencripta un mensaje
Sintaxis del programa
# -*- coding: utf-8 -*- from Tkinter import * # Jesus Eduardo Martinez Hinojosa # Ventana ventana = Tk() ventana.geometry("300x300+350+80") ventana.title("Encriptador") ventana.resizable(width=False, height=False) try: ventana.iconbitmap("icono.ico") except: print("no hay icono disponible") # Clave numclave = 1 # Funciones. def boton1(): # Cifrado Cesar TAM_MAX_CLAVE = 26 def obtenerModo(): modo = "e" return modo def obtenerMensaje(): mensaje = text.get("0.0", END) return mensaje def obtenerClave(): global numclave clave = numclave return clave def obtenerMensajeTraducido(modo, mensaje, clave): if modo[0] == 'd': clave = -clave traduccion = '' for simbolo in mensaje: if simbolo.isalpha(): num = ord(simbolo) num += clave if simbolo.isupper(): if num > ord('Z'): num -= 26 elif num < ord('A'): num += 26 elif simbolo.islower(): if num > ord('z'): num -= 26 elif num < ord('a'): num += 26 traduccion += chr(num) else: traduccion += simbolo return traduccion modo = obtenerModo() mensaje = obtenerMensaje() if modo[0] != 'b': clave = obtenerClave() if modo[0] != 'b': texto = (obtenerMensajeTraducido(modo, mensaje, clave)) text.delete("0.0", END) text.insert("0.0", texto) informe1.config(text="Texto Encriptado") else: for clave in range(1, TAM_MAX_CLAVE + 1): print(clave, obtenerMensajeTraducido('desencriptar', mensaje, clave)) def boton2(): # Cifrado Cesar TAM_MAX_CLAVE = 26 def obtenerModo(): modo = "d" return modo def obtenerMensaje(): mensaje = text.get("0.0", END) return mensaje def obtenerClave(): global numclave clave = numclave return clave def obtenerMensajeTraducido(modo, mensaje, clave): if modo[0] == 'd': clave = -clave traduccion = '' for simbolo in mensaje: if simbolo.isalpha(): num = ord(simbolo) num += clave if simbolo.isupper(): if num > ord('Z'): num -= 26 elif num < ord('A'): num += 26 elif simbolo.islower(): if num > ord('z'): num -= 26 elif num < ord('a'): num += 26 traduccion += chr(num) else: traduccion += simbolo return traduccion modo = obtenerModo() mensaje = obtenerMensaje() if modo[0] != 'b': clave = obtenerClave() if modo[0] != 'b': texto = (obtenerMensajeTraducido(modo, mensaje, clave)) text.delete("0.0", END) text.insert("0.0", texto) informe1.config(text="Texto Desencriptado") else: for clave in range(1, TAM_MAX_CLAVE + 1): print(clave, obtenerMensajeTraducido('desencriptar', mensaje, clave)) def salir(): ventana.destroy() def menu_activacion(event): menu_despegable.post(event.x_root, event.y_root) def cortar(): text.clipboard_clear() text.clipboard_append(text.selection_get()) sel = text.get(SEL_FIRST, SEL_LAST) text.delete(SEL_FIRST, SEL_LAST) def copiar(): text.clipboard_clear() text.clipboard_append(text.selection_get()) def pegar(): tem = text.selection_get(selection="CLIPBOARD") text.insert(INSERT, tem) # Widget b1 = Button(ventana, text="Encriptar", bg='black', fg='white', activebackground='cyan', activeforeground='dark slate gray', command=boton1, font=("Courier New", 9)) b2 = Button(ventana, text="Desencriptar", bg='black', fg='white', activebackground='cyan', activeforeground='dark slate gray', command=boton2, font=("Courier New", 9)) text = Text(ventana, fg='lavender', bg='dark slate gray', font=("Courier New", 10)) informe1 = Label(ventana, text="Ingrese un texto", bg="turquoise", font=("Courier New", 10)) # Empaquetado de los widget b1.place(x=10, y=260, width=120, height=30) b2.place(x=167, y=260, width=120, height=30) informe1.place(x=0, y=0, width=300, height=30) text.place(x=0, y=30, height=218, width=300) # Menu popup(menu despegable) menu_despegable = Menu(ventana, tearoff=0) menu_despegable.add_command(label="Cortar", command=cortar, font=("Courier New", 9)) menu_despegable.add_command(label="Copiar", command=copiar, font=("Courier New", 9)) menu_despegable.add_command(label="Pegar", command=pegar, font=("Courier New", 9)) menu_despegable.add_separator() menu_despegable.add_command(label="Salir", command=salir, font=("Courier New", 9)) # Evento del menu despegable text.bind("b3", menu_activacion) # donde mantener el enfoque. ventana.mainloop()
Corrida en pantalla
No hay comentarios.:
Publicar un comentario