import base64
try:
# Python2
import Tkinter as tk
from urllib2 import urlopen
except ImportError:
# Python3
import tkinter as tk
from urllib.request import urlopen
root = tk.Tk()
root.title("Implementar imagenes desde la web")
# margenes
w = 800
h = 600
x = 80
y = 100
# usar width x height + x_offset + y_offset (no spaces!)
root.geometry("%dx%d+%d+%d" % (w, h, x, y))
# cualquier imagen de la red
image_url = "https://media.giphy.com/media/10h1BGkwYiIydi/giphy.gif"
image_byt = urlopen(image_url).read()
image_b64 = base64.encodestring(image_byt)
photo = tk.PhotoImage(data=image_b64)
# SE CREA UN CANVAS BLANCO
cv = tk.Canvas(bg='white')
cv.pack(side='top', fill='both', expand='yes')
# SE COLOCA LA IMAGEN EN EL CANVAS
# CREAR_IMAGEN(xpos, ypos, image, anchor)
cv.create_image(10, 10, image=photo, anchor='nw')
root.mainloop()
martes, 9 de abril de 2019
Importar imagen desde la web.
El siguiente programa implementa una imagen desde la web y la abre desde una nueva ventana.
lunes, 8 de abril de 2019
Encriptador.
Encriptador de mensajes.
# -*- 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("", menu_activacion)
# donde mantener el enfoque.
ventana.mainloop()
Numero aleatorio.
Programa que genera números a partir de 2 cantidades.
from Tkinter import *
from random import *
root = Tk()
root.geometry("500x500")
root.title("Generador de numeros")
root.config(bg="light steel blue")
def funcion():
num = randint(int(aux.get()), int(aux2.get()))
aux3.set(num)
et1 = Label(root, text="Numero 1").place(x=100, y=100)
et2 = Label(root, text="Numero 2").place(x=100, y=150)
et3 = Label(root, text="Numero generado").place(x=100, y=250)
arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
arr2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
aux = StringVar()
aux2 = StringVar()
aux3 = StringVar()
s1 = Spinbox(root, textvariable=aux, values=arr1).place(x=300, y=100)
s2 = Spinbox(root, textvariable=aux2, values=arr2).place(x=300, y=150)
caja = Entry(root, textvariable=aux3).place(x=300, y=250)
b1 = Button(root, text="Generar", command=funcion).place(x=300, y=300)
root.mainloop()
Ruta archivo.
Este programa nos permite seleccionar una ruta de nuestra computadora.
from Tkinter import *
from tkFileDialog import askopenfilename
root = Tk()
root.geometry("500x500")
root.title("Mostrar ruta fichero")
root.config(bg="light steel blue")
et1 = Label(root, text="Pulsa en el boton y elige una ruta").place(x=150, y=70)
def llamada():
nombre = StringVar()
nombre.set(askopenfilename())
Entry(root, width=40, textvariable=nombre).place(x=100, y=100)
Entry(root, width=40).place(x=100, y=100)
Button(root, text="...", command=llamada).place(x=370, y=100)
root.mainloop()
Saludador.
Se realizó un programa que saluda al usuario al presionar un botón.
from Tkinter import *
import tkMessageBox
root = Tk()
root.geometry("500x500")
root.title("Saludador")
root.config(bg="light steel blue")
et1 = Label(root, text="Ingrese un nombre para mandar saludo:").place(x=160, y=130)
entrada = StringVar()
entrada.set('')
caja11 = Entry(root, textvariable=str(entrada)).place(x=170, y=180)
b1 = Button(root, text="Saludar",
command=lambda: tkMessageBox.showinfo("Saludo!", "Hola " + entrada.get() + "!")).place(x=200, y=230)
root.mainloop()
Programa interés anual.
Programa que calcula el interés anual de x cantidad en y años.
# programa que calcula el interes anual
# !/usr/bin/env python
# -*- coding: utf-8 -*-
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, "anos, con un interes de", v2, " usted habra generado", f, "pesos"
v = Tk()
v.title("Interes")
v.geometry("400x300")
v.config(bg='light steel blue')
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)
vp.config(bg="light steel blue")
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="Anos:")
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()
Peliculas.
Programa en el que guardamos películas y a su vez se puede rentar.
# coding=utf-8
# Aportacion de Brandon Asael Cerda Hernandez
# Programa: con listas, combo box, agrega a la lista las peliculas al guardar
# excelente programa en python!!!
# -*- coding: utf-8 -*-from Tkinter import Label,Entry,Button,Tk,Frame,W,N,S,E,END,HORIZONTAL,Spinbox
from ttk import *
from tkMessageBox import askyesno, showinfo, showerror;
from Tkinter import *
# en el import, solo estoy pidiendo importar los elementos que vamos a usar, para no usar el * sin necesidad de traer mas elementos
def AddEntryMovie():
Movie = CatchMovie.get()
if (CatchMovie.get() == ""):
CatchMovie.config(bg="red")
showerror("What Movie it is?", "Por favor ingresa una pelicula! no dejes el campo en blanco!")
CatchMovie.config(bg="white")
if (Classes.get() == ""):
# otra pequeña "excepcion" por si la clasificación de la pelicula no tiene seleccionada una clasificacion
showerror("What Movie it is?", "Por favor selecciona una clasificacion!")
if (askyesno("Are you sure?",
"Deseas añadir esta pelicula: \n\"" + Movie + "\"\nA la lista de peliculas?") == True):
values = list(MoviesOnList["values"])
# se crea dentro de la funcion la Variable "values" que sera una lista de los valores que se encuentran en la lista despegable
MoviesOnList["values"] = values + [Movie]
# de la lista despegalble agregamos el nuevo valor que esta en nuestro campo de texto, para esto debemos ponerlo entre # [] para que se interprete como el valor de una lista y pueda sumarse a la lista despegable de peliculas
Classifications.insert(i, Classes.get())
# añade la clasificiación a una lista, para asi tenerla disponible en la Lista Despegable de Peliculas disponibles
Mov.insert(i, Movie)
i + 1
CatchMovie.delete(0, END)
# ya lo hemos visto antes pero lo explicare aun asi, .delete(0, END) borra el texto dentro del Entry
CatchMovie.insert(0, "")
# Aqui es casi lo mismo, pero deja el campo Vacio y usable, tambien para evitar errores de captura
Classes.set("")
# Reinicia la Lista Despegable de las clasificaciones
showinfo("Exito!", "Has anadido: \"" + Movie + "\" A la lista de Peliculas")
else:
showinfo("Guess No", "La Pelicula: " + Movie + " No sera anadida")
def firstDone():
if (askyesno("Are you sure?",
"ADVERTENCIA: ESTA ACCION NO PUEDE SER DESHECHA" "\nSi de verdad ya terminaste te agregar peliculas, prosigue, si no, DETENTE!") == True):
CatchMovie.config(state="disable")
Classes.config(state="disable")
AddMov.config(state="disable")
Done.config(state="disable")
# tambien se habia visto antes, pero explicare aun asi, el 'state' "disable" deshabilita el componente del frame app.geometry("600x300")
# se puede cambiar la dimension de una ventana, aunque se haya establecido un tamaño, esto nos permite controlar la ventana y los componentes a mostrar
MovietoRent.grid()
MoviesOnList.grid()
ClassifiedAs.grid()
AskRent.grid()
Days4Rent.grid()
Rent.grid()
# simplemente con .grid() vuelvo a colocar en su respectivo lugar, los elementos que no son visibles para el usuario, ocultos con '.grid_remove()'
showinfo("", "Puedes seguir agregando peliculas si gustas!")
def MovieSel(self):
ClassifiedAs.config(state="normal")
# para que un Entry pueda mostrar un texto, es necesario que este en un estado normal (state="normal")
ClassifiedAs.delete(0, END)
ClassifiedAs.insert(0, Classifications.__getitem__(Mov.index(MoviesOnList.get())))
# aqui se hace uso de la Lista [] y el atributo "__getitem__()" para obtener lo que este en la lista, para ello #es necesario poner un indice numerico, asi que utilizando ".index()" puedo llamar solo el indice (numero en la lista) #y .__getitem__() obtendra el objeto que este en ese indice de la lista, para asi poder mostrar la clasificación correecta ClassifiedAs.config(state="readonly")
# al cambiar el estado a "Solo Lectura" (state="readonly") el Entry solo mostrara Texto, pero no permitira la entrada de datos o textos
def RentAMovie():
if (askyesno("You ready?", "Deseas Rentar la pelicula: " + MoviesOnList.get() +
"\n por " + Days4Rent.get() + " Dia/s?") == True):
if (ClassifiedAs.get() == "Adultos"):
if (askyesno("Age Issue", "Eres Mayor de Edad?") == True):
showinfo("Ask for: ", "Presente su Identificación")
else:
showerror("Get outta here", "NO SE RENTAN PELICULAS A MENORES")
else:
showinfo("Have a nice day!", "Disfruta de tu pelicula! \nQue tengas un Buen dia :)")
else:
showinfo("Ok?", "De acuerdo, revisa tus opciones entonces :)")
app = Tk()
app.geometry("600x400")
app.title("Lista de Peliculas")
vp = Frame(app)
vp.grid(column=0, row=0, padx=(30, 30), pady=(20, 20))
vp.rowconfigure(0, weight=1)
vp.columnconfigure(0, weight=1)
Classified = Label(vp, text="Clasificación")
Classified.grid(column=2, row=1, padx=(10, 10), pady=(10, 10))
AskMov = Label(vp, text="Ingrese una Pelicula: ")
AskMov.grid(column=1, row=1, padx=(10, 10), pady=(10, 10), sticky=W)
cMovie = StringVar
CatchMovie = Entry(vp, textvariable=cMovie, width=35)
CatchMovie.grid(column=1, row=2, padx=(10, 10), pady=(10, 10))
AddMov = Button(vp, text="Añadir", command=AddEntryMovie)
AddMov.grid(column=3, row=2, padx=(10, 10), pady=(10, 10))
Done = Button(vp, text="Finalizar", command=firstDone)
Done.grid(column=4, row=2, padx=(10, 10), pady=(10, 10))
Classes = Combobox(vp, state="readonly")
Classes.grid(column=2, row=2, padx=(10, 10), pady=(10, 10))
Classes["values"] = ["Para todas las Edades", "Familiar", "Mayores de 10", "Adolescentes", "Mayores de 15", "Adultos"]
Separator(vp, orient=HORIZONTAL).grid(column=1, row=3, columnspan=4, sticky=W + E, pady=(10, 10))
MovietoRent = Label(vp, text="Pelicula a Rentar: ")
MovietoRent.grid(column=1, row=4, padx=(10, 10), pady=(30, 10), stick=W)
MovietoRent.grid_remove()
MoviesOnList = Combobox(vp, state="readonly")
MoviesOnList.grid(column=1, row=5, padx=(10, 10), pady=(10, 10), sticky=W + E)
MoviesOnList.bind(MovieSel)
MoviesOnList.grid_remove()
ClassifiedAs = Entry(vp, state="readonly")
ClassifiedAs.grid(column=2, row=5, padx=(10, 10), pady=(10, 10), sticky=W + E)
ClassifiedAs.grid_remove()
AskRent = Label(vp, text="Dias\n a Rentar")
AskRent.grid(column=3, row=4, padx=(10, 10), pady=(10, 10))
AskRent.grid_remove()
Days4Rent = Spinbox(vp, width=5, from_=1, to=7)
Days4Rent.grid(column=3, row=5, padx=(10, 10), pady=(10, 10), sticky=N + S)
Days4Rent.grid_remove()
Rent = Button(vp, text="Rentar", command=RentAMovie)
Rent.grid(column=4, row=5, padx=(10, 10), pady=(10, 10))
Rent.grid_remove()
Classifications = []
Mov = []
i = int(0)
app.mainloop()
Programa dialogos.
En esta ocasión realizamos un programa que ejemplifica un formulario simple.
# Aportacion.- Luis Angel Alonso Rojas
# programa que hace la interfaz
# programa que te pide tus datos basicos
# Luis Angel Alonso Rojas#15260607
from Tkinter import *
root = Tk()
root.title('Formulario 1')
root.geometry("300x100")
root.config(bg="light steel blue")
nombre_label = Label(root, text="Nombre :")
nombre_label.grid(row=1, column=1)
nombre_str = StringVar()
nombre_entry = Entry(root, textvariable=nombre_str)
nombre_entry.grid(row=1, column=2)
last_label = Label(root, text="Apellido : ")
last_label.grid(row=2, column=1)
last_str = StringVar()
last_entry = Entry(root, textvariable=last_str)
last_entry.grid(row=2, column=2)
mail_label = Label(root, text="Email : ")
mail_label.grid(row=3, column=1)
mail_str = StringVar()
mail_entry = Entry(root, textvariable=mail_str)
mail_entry.grid(row=3, column=2)
endfinish = Button(root, text="Finalizar", relief=FLAT)
endfinish.grid(row=4, column=2)
root.mainloop()
domingo, 7 de abril de 2019
Programa IMC.
Programa que nos indica nuestro IMC y si nos encontramos en buen peso, sobrepeso, etc.
# -*- coding: utf-8 -*-
import sys
import Tkinter as tk
from Tkinter import *
import tkMessageBox
def imc():
num1 = int(entrada_peso.get())
num2 = float(entrada_altura.get())
imc = (num1 / (num2*num2))
if imc == 0 or imc < 18:
tkMessageBox.showinfo("Resultado", "Peso bajo. Necesario valorar signos de desnutrición")
elif imc == 18 or imc < 25:
tkMessageBox.showinfo("Resultado", "Usted tiene un peso normal")
elif imc == 25 or imc < 27:
tkMessageBox.showinfo("Resultado", "Usted padece sobrepeso")
elif imc == 27 or imc < 30:
tkMessageBox.showinfo("Resultado", "Usted padece obesidad grado I")
elif imc == 30 or imc < 40:
tkMessageBox.showinfo("Resultado", "Usted padece de obesidad grado II")
else:
tkMessageBox.showinfo("Resultado", "Usted padece de obesidad morbida")
ventana=Tk()
ventana.title("Calculo de IMC")
ventana.geometry("400x200")
ventana.config(bg="light steel blue")
vp = Frame(ventana)
vp.grid(column=0, row=0, padx=(50, 50), pady=(10, 10)) #para posicionar cualquier objetovp.columnconfigure(0, weight=1)
vp.rowconfigure(0, weight=1)
peso = IntVar()
altura = float()
etiqueta_peso = Label(ventana, text='Peso(kg):', bg='light steel blue')
etiqueta_peso.grid(row=1, column=1, padx=(10, 10), pady=(10, 10), sticky=E)
entrada_peso = Entry(ventana, textvariable=peso)
entrada_peso.grid(row=1, column=2, padx=(10, 10), pady=(10, 10), sticky=E)
etiqueta_altura = Label(ventana, text='Altura(mts): ', bg='light steel blue')
etiqueta_altura.grid(row=2, column=1, padx=(10, 10), pady=(10, 10), sticky=E)
entrada_altura = Entry(ventana, textvariable=altura)
entrada_altura.grid(row=2, column=2, padx=(10, 10), pady=(10, 10), sticky=E)
bconv = Button(ventana, bg='LightGreen', fg='white', text='Calcular IMC', width=10, height=1, command=imc)
bconv.grid(row=4, column=2, padx=(10, 10), pady=(10, 10))
ventana.mainloop()
miércoles, 3 de abril de 2019
Programa punto de venta (modificado).
En esta ocasión realizamos un programa que simula un punto de venta.
from Tkinter import *
import tkMessageBox
def SumMul():
try:
_e0= int(v0.get())
_e0=_e0*.50
_e1 = int(v1.get())
_e1 = _e1 * 1
_e2 = int(v2.get())
_e2 = _e2 * 2
_e3 = int(v3.get())
_e3 = _e3 * 5
_e4 = int(v4.get())
_e4 = _e4 * 10
_e5 = int(v5.get())
_e5 = _e5 * 20
_e6 = int(v6.get())
_e6 = _e6 * 50
_e7 = int(v7.get())
_e7 = _e7 * 100
_e8 = int(v8.get())
_e8 = _e8 * 200
_e9 = int(v9.get())
_e9 = _e9 * 500
_e10= _e0 + _e1 + _e2 + _e3 + _e4 + _e5 + _e6 + _e7 + _e8 + _e9
tkMessageBox.showinfo("El resultado es", _e10)
except ValueError:
tkMessageBox.showerror("Error","Introduce un numero entero")
v=Tk()
v.title("")
v.geometry("300x450")
v.config(bg="black")
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)
ET0=Label(vp,text="MONEDAS",fg="blue",font="ArialBlack")
ET0.grid(column=2, row=1)
e0=Label(vp,text="0.50")
e0.grid(column=1, row=3)
e1=Label(vp,text="1.00")
e1.grid(column=1, row=4)
e2=Label(vp,text="2.00")
e2.grid(column=1, row=5)
e3=Label(vp,text="5.00")
e3.grid(column=1, row=6)
e3=Label(vp,text="10.00")
e3.grid(column=1, row=7)
v0 = ""
v0 = Entry(vp, width=5, textvariable=v0)
v0.grid(row=3, column=2)
v1 = ""
v1 = Entry(vp, width=5, textvariable=v1)
v1.grid(row=4, column=2)
v2 = ""
v2 = Entry(vp, width=5, textvariable=v2)
v2.grid(row=5, column=2)
v3 = ""
v3 = Entry(vp, width=5, textvariable=v3)
v3.grid(row=6, column=2)
v4 = ""
v4 = Entry(vp, width=5, textvariable=v4)
v4.grid(row=7, column=2)
ET1=Label(vp,text="BILLETES",fg="blue",font="Arial")
ET1.grid(column=2, row=9)
e4=Label(vp,text="20.00")
e4.grid(column=1, row=11)
e5=Label(vp,text="50.00")
e5.grid(column=1, row=12)
e6=Label(vp,text="100.00")
e6.grid(column=1, row=13)
e7=Label(vp,text="200.00")
e7.grid(column=1, row=14)
e8=Label(vp,text="500.00")
e8.grid(column=1, row=15)
v5 = ""
v5 = Entry(vp, width=5, textvariable=v5)
v5.grid(row=11, column=2)
v6 = ""
v6 = Entry(vp, width=5, textvariable=v6)
v6.grid(row=12, column=2)
v7 = ""
v7 = Entry(vp, width=5, textvariable=v7)
v7.grid(row=13, column=2)
v8 = ""
v8 = Entry(vp, width=5, textvariable=v8)
v8.grid(row=14, column=2)
v9 = ""
v9 = Entry(vp, width=5, textvariable=v9)
v9.grid(row=15, column=2)
b = Button(vp, text="TOTAL", command=SumMul)
b.grid(row=17, column=2, padx=(20, 20), pady=(20, 20))
b['bg'] = 'blue'
v.mainloop()
lunes, 1 de abril de 2019
Figura (X1,Y1,X2,Y2) circulo con coordenadas.
En esta ocasion realizamos un programa que nos realice una figura dependiendo de las coordenadas dadas.
from Tkinter import *
def poligono(val1, val2,val3,val4):
v1 = Toplevel(ventana)
v1.title('Grafica')
v1.protocol('WM_DELETE_WINDOW', 'onexit')
v1.geometry('500x500')
grafica = Canvas(v1, width = 300 , height = 300, bg = 'black')
grafica.pack(expand=YES, fill=BOTH)
val1= int(e1.get())
val2= int(e2.get())
val3 = int(e3.get())
val4 = int(e4.get())
grafica.create_oval(val1, val2, val3, val4, fill = 'red')
b = Button(grafica, text = 'Regresar', command = lambda: ejecutar(ocultar(v1)))
b.grid(row = 1, column = 3)
def ocultar(v1):
v1.destroy()
def ejecutar(f):
ventana.after(200, f)
ventana = Tk()
ventana.title('Graficando')
ventana.geometry('700x300')
v1= ''
v2= ''
v3= ''
v4= ''
etiqueta1= Label(ventana, text = 'Valor X1')
etiqueta1.grid(row = 2, column = 1)
etiqueta2= Label(ventana, text = 'Valor Y1')
etiqueta2.grid(row = 3, column = 1)
etiqueta3= Label(ventana, text = 'Valor X2')
etiqueta3.grid(row = 2, column = 3)
etiqueta4= Label(ventana, text = 'Valor Y2')
etiqueta4.grid(row = 3, column = 3)
e1 = Entry(ventana, textvariable = v1)
e1.grid(row = 2, column =2)
e2 = Entry(ventana, textvariable = v2)
e2.grid(row = 3, column = 2)
e3 = Entry(ventana, textvariable = v3)
e3.grid(row = 2, column = 4)
e4 = Entry(ventana, textvariable = v4)
e4.grid(row = 3, column = 4)
b1 = Button(ventana, text = 'Graficar un circulo:', command = lambda:poligono(v1,v2,v3,v4))
b1.grid(row =4, column =2)
b2 = Button(ventana, text = 'Salir', command = lambda: ejecutar(ocultar(ventana)))
b2.grid(row= 4, column = 3)
mainloop()
Boton cambiante color contador.
Este programa cambia de color al ser presionado y nos va contando cada vez que presionemos el botón.
#!/usr/bin/python
# -*- coding: utf-8 -*-
# www.pythondiario.com
from Tkinter import *
def Call(): # Definimos la funcion
lab = Label(root, text='Usted presiono\nel boton')
lab.pack()
boton['bg'] = 'blue' # Al presionar queda azul
boton['fg'] = 'white' # Si pasamos el Mouse queda blanco
root = Tk() # Ventana de fondo
root.geometry('100x110+350+70') # Geometría de la ventana
boton = Button(root, text='Presionar', command=Call)
boton.pack()
root.mainloop()
Listbox con boton.
En esta ocasión complementamos el Listbox agregando un botón para mostrar la lista.
#!/usr/bin/python
# -*- coding: utf-8 -*-
# www.pythondiario.com
from Tkinter import * # Importamos el modulo Tkinter
def DrawList(): # Creamos una lista con algunos nombres
plist = ['Daniel', 'Jesuss', 'Armando']
for item in plist: # Insertamos los items en un Listbox
listbox.insert(END, item);
root = Tk() # Creamos una ventana de fondo
listbox = Listbox(root)
boton = Button(root, text="Presionar", command=DrawList)
boton.pack()
listbox.pack() # Hacemos los pack() del boton y el Listbox
root.mainloop() # Entramos en el loop
Listbox simple en Python.
En esta ocasión generamos un listbox con los nombres de los alumnos de la clase utilizando la libreria Tkinter.
#!/usr/bin/python# -*- coding: utf-8 -*-# www.pythondiario.com from Tkinter import * # Importamos el módulo Tkinter root = Tk() # Creamos la ventana de fondo# Creamos una lista con nombresli = 'Daniel Armando Luis Carlos Hector Yisus Nadia Jared'.split() listb = Listbox(root) # Creamos un Widgets Listboxfor item in li: # Insertamos los nombres de la lista en el Listbox listb.insert(0, item) listb.pack() # Hacemos el pack del widgetroot.mainloop() # Ejecutamos el bucle
Suma, resta y multiplicación de numeros.
Este programa nos permite realizar la suma, resta y multiplicación de dos números ingresados por el usuario.
import sys
from Tkinter import *
def sumar():
try:
_valor1 = int(entrada1_texto.get())
_valor2 = int(entrada2_texto.get())
_valor = _valor1+_valor2
etiqueta1.config(text=_valor)
except ValueError:
etiqueta1.config(text="Introduce numeros!")
def restar():
try:
_valor1 = int(entrada1_texto.get())
_valor2 = int(entrada2_texto.get())
_valor = _valor1 - _valor2
etiqueta2.config(text=_valor)
except ValueError:
etiqueta2.config(text="Introduce numeros!")
def multiplicar():
try:
_valor1 = int(entrada1_texto.get())
_valor2 = int(entrada2_texto.get())
_valor = _valor1 * _valor2
etiqueta3.config(text=_valor)
except ValueError:
etiqueta3.config(text="Introduce numeros!")
app = Tk()
app.title("Operaciones matematicas")
vp = Frame(app)
vp.grid(column=0, row=0, padx=(50,50), pady=(10,10))
vp.columnconfigure(0, weight=1)
vp.rowconfigure(0, weight=1)
etiqueta1 = Label(vp, text="Valor de la suma")
etiqueta1.grid(column=3, row=4, sticky=(W,E))
etiqueta2 = Label(vp, text="Valor de la resta")
etiqueta2.grid(column=5, row=4, sticky=(W, E))
etiqueta3 = Label(vp, text="Valor de la multiplicacion")
etiqueta3.grid(column=7, row=4, sticky=(W, E))
etiqueta4 = Label(vp, text='Dame el primer valor')
etiqueta4.grid(column=1,row=1, sticky=(W, E))
etiqueta5 = Label(vp, text='Dame el segundo valor')
etiqueta5.grid(column=1,row=4, sticky=(W, E))
boton1 = Button(vp, text="Sumar los valores!", command=sumar)
boton1.grid(column=3, row=1)
boton2 = Button(vp, text="Restar los valores!", command=restar)
boton2.grid(column=5, row=1)
boton3 = Button(vp, text="Multiplicar los valores!", command=multiplicar)
boton3.grid(column=7, row=1)
_valor1 = ""
entrada1_texto = Entry(vp, width=10, textvariable=_valor1)
entrada1_texto.grid(column=2, row=1)
valor2 = ""
entrada2_texto = Entry(vp, width=10, textvariable=valor2)
entrada2_texto.grid(column=2, row=4)
vp = Frame(app)
vp.grid(column=0, row=0, padx=(50,50), pady=(10,10))
vp.columnconfigure(0, weight=1)
vp.rowconfigure(0, weight=1)
app.mainloop()
Cajas dialogo multiplicación 5, 10 y 15.
En esta ocasión se realizó una caja que nos multiplicará tres numeros dados por 5, 10 y 15 respectivamente.
#!/usr/bin/python
# -*- coding: utf-8 -*-
# www.pythondiario.com
import sys
from Tkinter import *
def hacer_click1():
try:
_valor = int(entrada_texto.get())
_valor = _valor * 5
etiqueta1.config(text=_valor)
except ValueError:
etiqueta1.config(text="Introduce un numero!")
def hacer_click2():
try:
_valor2 = int(entrada_texto.get())
_valor2 = _valor2 * 10
etiqueta2.config(text=_valor2)
except ValueError:
etiqueta2.config(text="Introduce un numero!")
def hacer_click3():
try:
_valor = int(entrada_texto.get())
_valor3 = _valor * 15
etiqueta3.config(text=_valor3)
except ValueError:
etiqueta1.config(text="Introduce un numero!")
app = Tk()
app.title("Mi segunda App Grafica")
#Ventana Principal
vp = Frame(app)
vp.grid(column=0, row=0, padx=(50,50), pady=(10,10))
vp.columnconfigure(0, weight=1)
vp.rowconfigure(0, weight=1)
etiqueta1 = Label(vp, text="Valor")
etiqueta1.grid(column=2, row=2, sticky=(W,E))
etiqueta2 = Label(vp, text="Valor")
etiqueta2.grid(column=2, row=4, sticky=(W, E))
etiqueta3 = Label(vp, text="Valor")
etiqueta3.grid(column=2, row=6, sticky=(W, E))
boton1 = Button(vp, text="Multiplica por 5!", command=hacer_click1)
boton1.grid(column=1, row=1)
boton2 = Button(vp, text="Multiplica por 10!", command=hacer_click2)
boton2.grid(column=1, row=4)
boton3 = Button(vp, text="Multiplica por 15!", command=hacer_click3)
boton3.grid(column=1, row=7)
valor1 = ""
entrada_texto = Entry(vp, width=10, textvariable=valor1)
entrada_texto.grid(column=2, row=1)
valor2 = ""
entrada_texto = Entry(vp, width=10, textvariable=valor2)
entrada_texto.grid(column=2, row=3)
valor3 = ""
entrada_texto = Entry(vp, width=10, textvariable=valor3)
entrada_texto.grid(column=2, row=5)
app.mainloop()
Suscribirse a:
Entradas (Atom)