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.

       
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()


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()