martes, 4 de diciembre de 2018

piramide o triangulo 3d

programa que muestra en ventana un triangulo en 3d moviendose de forma aleatoria.

codigo del programa:

import pygame
from pygame.locals import *

from OpenGL.GL import *
from OpenGL.GLU import *

verticies = (
    (1, -1, -1),    (1, 1, -1),    (-1, 1, -1),    (-1, -1, -1),    (0, 0, 1)

)

edges = (
    (4, 0),    (4, 1),    (4, 2),    (4, 3),    (0, 1),    (0, 3),    (2, 1),    (2, 3)

)


def Cube():
    glBegin(GL_LINES)
    for edge in edges:
        for vertex in edge:
            glVertex3fv(verticies[vertex])
    glEnd()


def main():
    pygame.init()
    display = (800, 600)
    pygame.display.set_mode(display, DOUBLEBUF | OPENGL)

    gluPerspective(45, (display[0] / display[1]), 0.1, 50.0)

    glTranslatef(0.0, 0.0, -5)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        glRotatef(1, 3, 1, 1)
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
        Cube()
        pygame.display.flip()
        pygame.time.wait(10)


main()



triangulo 3d mostrandose en pantalla al ejecutar el programa:

cubo 3d de colores

programa que despliega en ventana un cubo en movimiento de varios colores

codigo del programa:

import sys, math, pygame
from operator import itemgetter


class Point3D:
    def __init__(self, x=0, y=0, z=0):
        self.x, self.y, self.z = float(x), float(y), float(z)

    def rotateX(self, angle):
        """ Rotates the point around the X axis by the given angle in degrees. """        rad = angle * math.pi / 180        cosa = math.cos(rad)
        sina = math.sin(rad)
        y = self.y * cosa - self.z * sina
        z = self.y * sina + self.z * cosa
        return Point3D(self.x, y, z)

    def rotateY(self, angle):
        """ Rotates the point around the Y axis by the given angle in degrees. """        rad = angle * math.pi / 180        cosa = math.cos(rad)
        sina = math.sin(rad)
        z = self.z * cosa - self.x * sina
        x = self.z * sina + self.x * cosa
        return Point3D(x, self.y, z)

    def rotateZ(self, angle):
        """ Rotates the point around the Z axis by the given angle in degrees. """        rad = angle * math.pi / 180        cosa = math.cos(rad)
        sina = math.sin(rad)
        x = self.x * cosa - self.y * sina
        y = self.x * sina + self.y * cosa
        return Point3D(x, y, self.z)

    def project(self, win_width, win_height, fov, viewer_distance):
        """ Transforms this 3D point to 2D using a perspective projection. """        factor = fov / (viewer_distance + self.z)
        x = self.x * factor + win_width / 2        y = -self.y * factor + win_height / 2        return Point3D(x, y, self.z)


class Simulation:
    def __init__(self, win_width=640, win_height=480):
        pygame.init()

        self.screen = pygame.display.set_mode((win_width, win_height))
        pygame.display.set_caption("Figura de cubo 3D en python")

        self.clock = pygame.time.Clock()

        self.vertices = [
            Point3D(-1, 1, -1),            Point3D(1, 1, -1),            Point3D(1, -1, -1),            Point3D(-1, -1, -1),            Point3D(-1, 1, 1),            Point3D(1, 1, 1),            Point3D(1, -1, 1),            Point3D(-1, -1, 1)
        ]

        # Define the vertices that compose each of the 6 faces. These numbers are        #  indices to the vertices list defined above.        self.faces = [(0, 1, 2, 3), (1, 5, 6, 2), (5, 4, 7, 6), (4, 0, 3, 7), (0, 4, 5, 1), (3, 2, 6, 7)]

        # Define colors for each face        self.colors = [(255, 0, 100), (100, 0, 0), (0, 25, 0), (0, 0, 255), (0, 255, 155), (255, 5, 0)]

        self.angle = 0
    def run(self):
        """ Main Loop """        while 1:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    sys.exit()

            self.clock.tick(50)
            self.screen.fill((0, 32, 0))

            # It will hold transformed vertices.            \            t = []

            for v in self.vertices:
                # Rotate the point around X axis, then around Y axis, and finally around Z axis.                r = v.rotateX(self.angle).rotateY(self.angle).rotateZ(self.angle)
                # Transform the point from 3D to 2D                p = r.project(self.screen.get_width(), self.screen.get_height(), 256, 4)
                # Put the point in the list of transformed vertices                t.append(p)

            # Calculate the average Z values of each face.            avg_z = []
            i = 0            for f in self.faces:
                z = (t[f[0]].z + t[f[1]].z + t[f[2]].z + t[f[3]].z) / 4.0                avg_z.append([i, z])
                i = i + 1            # Draw the faces using the Painter's algorithm:            #  Distant faces are drawn before the closer ones.            for tmp in sorted(avg_z, key=itemgetter(1), reverse=True):
                face_index = tmp[0]
                f = self.faces[face_index]
                pointlist = [(t[f[0]].x, t[f[0]].y), (t[f[1]].x, t[f[1]].y),                             (t[f[1]].x, t[f[1]].y), (t[f[2]].x, t[f[2]].y),                             (t[f[2]].x, t[f[2]].y), (t[f[3]].x, t[f[3]].y),                             (t[f[3]].x, t[f[3]].y), (t[f[0]].x, t[f[0]].y)]
                pygame.draw.polygon(self.screen, self.colors[face_index], pointlist)

            self.angle += 1            pygame.display.flip()


if __name__ == "__main__":
    Simulation().run()


cubo mostrandose en ventana:


cubo 3d en movimiento

programa que despliega un cubo moviendose de forma aleatoria en ventana.

el codigo del programa es el siguiente:

import pygame
from pygame.locals import *

from OpenGL.GL import *
from OpenGL.GLU import *

verticies = (
    (1, -1, -1),    (1, 1, -1),    (-1, 1, -1),    (-1, -1, -1),    (1, -1, 1),    (1, 1, 1),    (-1, -1, 1),    (-1, 1, 1)
)

edges = (
    (0, 1),    (0, 3),    (0, 4),    (2, 1),    (2, 3),    (2, 7),    (6, 3),    (6, 4),    (6, 7),    (5, 1),    (5, 4),    (5, 7)
)


def Cube():
    glBegin(GL_LINES)
    for edge in edges:
        for vertex in edge:
            glVertex3fv(verticies[vertex])
    glEnd()


def main():
    pygame.init()
    display = (800, 600)
    pygame.display.set_mode(display, DOUBLEBUF | OPENGL)

    gluPerspective(45, (display[0] / display[1]), 0.1, 50.0)

    glTranslatef(0.0, 0.0, -5)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        glRotatef(1, 3, 1, 1)
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
        Cube()
        pygame.display.flip()
        pygame.time.wait(10)


main()


programa ejecutandose:



grafica 3d

programa que muestra grafica en 3D.

el codigo del programa es el siguiente:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt

fig = plt.figure()
ax1 = fig.add_subplot(111, projection='3d')

xpos = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
ypos = [2, 3, 4, 5, 1, 6, 2, 1, 7, 2, 3, 5, 1, 3, 2]
num_elements = len(xpos)
zpos = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
dx = dy = dz = [20, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

ax1.bar3d(xpos, ypos, zpos, dx, dy, dz, color='blue')
plt.show()
                                                                                                                    


programa ejecutandose mostrando la grafica:


domingo, 2 de diciembre de 2018

edad

programa que calcula si eres o no mayor de edad.

´el codigo del programa es el siguiente:

import sys
from Tkinter import *
import tkMessageBox


def CalcularEdad():
    Valor = int(CajaEdad.get())
    if (2018 - Valor >= 18):
        tkMessageBox.showinfo("Felicidades", "Eres Mayor de Edad!")
    elif (2018 - Valor <= 5):
        tkMessageBox.showinfo("Eehhh?", "Como puedes tener menos de 5  y usar este programa")
    elif ((2018 - Valor) > 8 and (2018 - Valor) < 18):
        tkMessageBox.showinfo("Alejate!", "Aun no posees la edad suficiente para seguir!")


ventana = Tk()
ventana.title("Mayor de edad")
ventana.geometry("600x400")

vp = Frame(ventana)  # estamos utilizando el objeto framevp.grid(column=0, row=0, padx =(50,50), pady=(10,10))vp.grid(column=0, row=0, padx=(50, 50), pady=(10, 10))
vp.columnconfigure(0, weigh=1)
vp.rowconfigure(0, weight=1)

PreguntarEdad = Label(vp, text="Por favor ingrese su fecha de Nacimiento")
PreguntarEdad.grid(column=1, row=1, padx=(10, 10), pady=(10, 10))

CajaEdad = Spinbox(vp, from_=1980, to=2018, width=10)
CajaEdad.grid(column=2, row=1, padx=(10, 10), pady=(10, 10), sticky=N + S)

BotonCalcular = Button(vp, text="Calcular!", command=CalcularEdad)
BotonCalcular.grid(column=3, row=1, padx=(10, 10), pady=(10, 10))

ventana.mainloop()

resultado de una persona que nacio en el año de 1997:




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: