domingo, 2 de diciembre de 2018

cantidad de dinero

programa que simula cantidades de dinero.

el codigo del programa es el siguiente:


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:
        etiqueta.config(text="Introduce un numero entero")


v = Tk()
v.title("")
v.geometry("200x350")

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

e4 = Label(vp, text="10.00")
e4.grid(column=1, row=7)

v0 = Entry(vp, width=5, textvariable=e0)
v0.grid(row=3, column=2)

v1 = Entry(vp, width=5, textvariable=e1)
v1.grid(row=4, column=2)

v2 = Entry(vp, width=5, textvariable=e2)
v2.grid(row=5, column=2)

v3 = Entry(vp, width=5, textvariable=e3)
v3.grid(row=6, column=2)

v4 = Entry(vp, width=5, textvariable=e4)
v4.grid(row=7, column=2)

ET1 = Label(vp, text="BILLETES")
ET1.grid(column=2, row=9)

e5 = Label(vp, text="20.00")
e5.grid(column=1, row=11)

e6 = Label(vp, text="50.00")
e6.grid(column=1, row=12)

e7 = Label(vp, text="100.00")
e7.grid(column=1, row=13)

e8 = Label(vp, text="200.00")
e8.grid(column=1, row=14)

e9 = Label(vp, text="500.00")
e9.grid(column=1, row=15)

v5 = Entry(vp, width=5, textvariable=e5)
v5.grid(row=11, column=2)

v6 = Entry(vp, width=5, textvariable=e6)
v6.grid(row=12, column=2)

v7 = Entry(vp, width=5, textvariable=e7)
v7.grid(row=13, column=2)

v8 = Entry(vp, width=5, textvariable=e8)
v8.grid(row=14, column=2)

v9 = Entry(vp, width=5, textvariable=e9)
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))

v.mainloop()


programa en funcionamiento:


signo zodiacas

programa que despliega el signo zodiacal de o los usuarios.

el codigo del program es el siguiente:


import sys
import Tkinter as tk
from Tkinter import *
import tkMessageBox

ventana = Tk()
ventana.title("Signo Zodiacal")
ventana.geometry("400x200")
ventana.config(bg="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)

var = StringVar(ventana)
ver = StringVar(ventana)
var.set("Enero")  # initial valuever = StringVar(ventana)ver.set("1")  # initial valueetiqueta_mes = Label(ventana, text='Mes de nacimiento: ')
ent_mes = OptionMenu(ventana, var, "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto",                     "Septiembre", "Octubre", "Noviembre", "Diciembre", )
etiqueta_mes.grid(row=1, column=1, padx=(10, 10), pady=(10, 10), sticky=E)
ent_mes.grid(row=1, column=3)

etiqueta_dia = Label(ventana, text='Dia de nacimiento: ')
ent_dia = OptionMenu(ventana, ver, "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",                     "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31")
etiqueta_dia.grid(row=4, column=1, padx=(10, 10), pady=(10, 10), sticky=E)
ent_dia.grid(row=4, column=3)


def signo():
    month = str(var.get())
    day = int(ver.get())
    if month == "Marzo" and day >= 21 or month == "Abril" and day <= 20:
        tkMessageBox.showinfo("Signo", "Eres Aries")
    elif month == "Abril" and day >= 21 or month == "Mayo" and day <= 21:
        tkMessageBox.showinfo("Signo", "Eres Tauro")
    elif month == "Mayo" and day >= 22 or month == "Junio" and day <= 21:
        tkMessageBox.showinfo("Signo", "Eres Gemenis")
    elif month == "Junio" and day >= 22 or month == "Julio" and day <= 22:
        tkMessageBox.showinfo("Signo", "Eres Cancer")
    if month == "Julio" and day >= 23 or month == "Agosto" and day <= 23:
        tkMessageBox.showinfo("Signo", "Eres Leo")
    if month == "Agosto" and day >= 24 or month == "Septiembre" and day <= 23:
        tkMessageBox.showinfo("Signo", "Eres Virgo")
    if month == "Septiembre" and day >= 24 or month == "Octubre" and day <= 23:
        tkMessageBox.showinfo("Signo", "Eres Libra")
    if month == "Octubre" and day >= 24 or month == "Noviembre" and day <= 22:
        tkMessageBox.showinfo("Signo", "Eres Escorpion")
    if month == "Noviembre" and day >= 23 or month == "Diciembre" and day <= 21:
        tkMessageBox.showinfo("Signo", "Eres Sagitario")
    if month == "Diciembre" and day >= 22 or month == "Enero" and day <= 20:
        tkMessageBox.showinfo("Signo", "Eres Capricornio")
    if month == "Enero" and day >= 21 or month == "Febrero" and day <= 18:
        tkMessageBox.showinfo("Signo", "Eres Acuario")
    if month == "Febrero" and day >= 19 or month == "Marzo" and day <= 20:
        tkMessageBox.showinfo("Signo", "Eres Piscis")


boton = Button(ventana, text='Signo', command=signo, width=20)
boton.grid(row=5, column=1, padx=(10, 10), pady=(10, 10), sticky=E)

ventana.mainloop()


programa ejecutandose:

indice de masa corporal

programa que calcula el indice de masa corporal.

programa que nos ayuda a saber el indice de masa corporal del o los usuarios y nos permite conocer si tenemos un peso normal o pasados de peso.

el codigo del programa es el siguiente:

# -*- coding: utf-8 -*-import sysimport Tkinter
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 desnutricion")

    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="green")

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='ivory')
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='ivory')
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='plum', 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()


 programa mostrando el resultado:


lista peliculas

programa que permite crear una lista de peliculas ingresando su nombre y su clasificacion de acuerdo a las opciones del programa

el programa utiliza el siguiente codigo:

# -*- 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 elementosdef 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("600x120")
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 ejecutandose con exito:

datos basicos

programa que guarda datos basicos del usuario.

codigo del programa

from Tkinter import *
root = Tk()
root.title('formulario 1')
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()


programa ejecutandose:



calcular interes anual

programa que calcula el interes anual.

programa de operación matematica que calcula el interes anual en pesos mexicanos durante un periodo de años escritos por el usuario.

el codigo del programa es el siguiente:


# !/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("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="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()


el resultado final se muestra en consola:




mostrar y ocultar imagen

programa que muestra y oculta imagen.

lo principal en este programa es descargar una imagen en formato .gif, la que guste el usuario, guardarla en la carpeta de scratches de nuestro pograma pycharm y en la linea 19 img=boton = photoimage cambiar el nombre entre comillas al nombre de la imagen guardada.


# -*- coding: utf-8 -*-import Tkinter as tkfrom Tkinter import *

ventana = Tk()
ventana.geometry('400x700')
ventana.config(bg="black")
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="mario.gif")
b1 = Button(ventana, text="Boton 1", image=imgBoton, fg="black", 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=250)

ventana.mainloop()


programa ejecutandose: