# -*- coding: utf-8 -*- import pygame, sys, random import pygame.locals as GAME_GLOBALS import pygame.event as GAME_EVENTS import pygame.time as GAME_TIME pygame.init() clock = pygame.time.Clock() title_image = pygame.image.load("recursos/titulo.jpg")#imagenes game_over_image = pygame.image.load("recursos/Fin_juego.jpg") windowWidth = 400#tamaño de la ventana windowHeight = 600 surface = pygame.display.set_mode((windowWidth, windowHeight)) # ventana principal para nuestro juego pygame.display.set_caption('¡Déjate caer!') # Definimos las variables para las pulsaciones de las teclas leftDown = False#teclado fechas rightDown = False # Definimos las variables que afectarán a nustra partida gameStarted = False#variable comienzo gameEnded = False gamePlatforms = []#cuantas plataformas platformSpeed = 3#velocidad de generar plataformas platformDelay = 2000 #numero de varibles lastPlatform = 0#ultima plataforma platformsDroppedThrough = -1 dropping = False # Establecemos los contadores a cero gameBeganAt = 0 timer = 0 # Creamos un diccionario con todos los atributos del personaje principal player = { "x" : windowWidth / 2, "y" : 0, "height" : 20, "width" : 20, "vy" : 5 } # Comenzamos a definir las funciones que formarán parte de nuestro juego def drawPlayer(): pygame.draw.rect(surface, (255,128,0), (player["x"], player["y"], player["width"], player["height"])) #figura def movePlayer(): global platformsDroppedThrough, dropping leftOfPlayerOnPlatform = True rightOfPlayerOnPlatform = True if surface.get_at((int(player["x"]), int(player["y"] + player["height"]))) == (0,0,0,255): leftOfPlayerOnPlatform = False if surface.get_at((int(player["x"] + player["width"]), int(player["y"] + player["height"]))) == (0,0,0,255): rightOfPlayerOnPlatform = False if leftOfPlayerOnPlatform is False and rightOfPlayerOnPlatform is False and (player["y"] + player["height"]) + player["vy"] < windowHeight: player["y"] += player["vy"] if dropping is False: dropping = True platformsDroppedThrough += 1 else : foundPlatformTop = False yOffset = 0 dropping = False while foundPlatformTop is False: if surface.get_at((player["x"], (player["y"] + player["height"]) - yOffset )) == (0,0,0,255): player["y"] -= yOffset foundPlatformTop = True elif (player["y"] + player["height"]) - yOffset > 0: yOffset += 1 else : gameOver() break if leftDown is True: if player["x"] > 0 and player["x"] - 5 > 0: player["x"] -= 5 elif player["x"] > 0 and player["x"] - 5 < 0: player["x"] = 0 if rightDown is True: if player["x"] + player["width"] < windowWidth and (player["x"] + player["width"]) + 5 < windowWidth: player["x"] += 5 elif player["x"] + player["width"] < windowWidth and (player["x"] + player["width"]) + 5 > windowWidth: player["x"] = windowWidth - player["width"] def createPlatform(): global lastPlatform, platformDelay platformY = windowHeight gapPosition = random.randint(0, windowWidth - 40) gamePlatforms.append({"pos" : [0, platformY], "gap" : gapPosition}) lastPlatform = GAME_TIME.get_ticks() if platformDelay > 800: platformDelay -= 50 def movePlatforms(): # print("Platforms") for idx, platform in enumerate(gamePlatforms): platform["pos"][1] -= platformSpeed if platform["pos"][1] < -10: gamePlatforms.pop(idx) def drawPlatforms(): for platform in gamePlatforms: pygame.draw.rect(surface, (255,255,255), (platform["pos"][0], platform["pos"][1], windowWidth, 10)) pygame.draw.rect(surface, (0,0,0), (platform["gap"], platform["pos"][1], 40, 10) ) def gameOver(): global gameStarted, gameEnded platformSpeed = 0 gameStarted = False gameEnded = True def restartGame(): global gamePlatforms, player, gameBeganAt, platformsDroppedThrough, platformDelay gamePlatforms = [] player["x"] = windowWidth / 2 player["y"] = 0 gameBeganAt = GAME_TIME.get_ticks() platformsDroppedThrough = -1 platformDelay = 2000 def quitGame(): pygame.quit() sys.exit() # 'main' loop while True: surface.fill((0,0,0)) for event in GAME_EVENTS.get(): if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: leftDown = True if event.key == pygame.K_RIGHT: rightDown = True if event.key == pygame.K_ESCAPE: quitGame() if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT: leftDown = False if event.key == pygame.K_RIGHT: rightDown = False if event.key == pygame.K_SPACE: if gameStarted == False: restartGame() gameStarted = True if event.type == GAME_GLOBALS.QUIT: quitGame() if gameStarted is True: # Play game timer = GAME_TIME.get_ticks() - gameBeganAt movePlatforms() drawPlatforms() movePlayer() drawPlayer() elif gameEnded is True: # Draw game over screen surface.blit(game_over_image, (0, 150)) else : # Welcome Screen surface.blit(title_image, (0, 150)) if GAME_TIME.get_ticks() - lastPlatform > platformDelay: createPlatform() clock.tick(60) pygame.display.update()
Graficación
martes, 4 de diciembre de 2018
pygame juego
jueves, 29 de noviembre de 2018
Unidad 4: cubo
import pygame from pygame.locals import * from OpenGL.GL import * from OpenGL.GLU import * #definimos la ubicacion de (x, y, z)de cada vertice(punto) verticies = ( (1, -1, -1), #0
(1, 1, -1), #1
(-1, 1, -1), #2
(-1, -1, -1),#3
(1, -1, 1), #4
(1, 1, 1), #5
(-1, -1, 1), #6
(-1, 1, 1) #7 ) #definimos los bordes(tuplas(a,b))el borde se dibujara entre
2 vertices(empezamos con 0 ya que es primer vertice difinido) edges = ( (0, 1),#punto 0 a 1
(0, 3),#punto 0 a 3
(0, 4),#
(2, 1),#
(2, 3),#
(2, 7),#
(6, 3),#
(6, 4),#
(6, 7),#
(5, 1),#
(5, 4),#
(5, 7) # ) #generar un cubo def Cube():#funcion crear cubo glBegin(GL_LINES)#esto notifica a OpenGL que estamos a
#punto de lanzarle un código
#GL_LINES indica como manejar el código, tratara el código como
#dibujo de linea
for edge in edges:#borde por borde (par de vertices) for vertex in edge:#vertice en bordes glVertex3fv(verticies[vertex])#dibujo de lineas (A,B) glEnd()#fin de OpenGL #mostrar cubo def main(): pygame.init()#inicio de pygame display = (800, 600)#mostrar , tamaño(x,y()ancho x alto) pygame.display.set_mode(display, DOUBLEBUF | OPENGL)# #notifica a PyGame que vamos a alimentarlo con código OpenGL
#DOUBLEBUF, que significa doble búfer, y es un tipo de búfer donde hay dos búferes para cumplir con las tasas de actualización del monitor. Tome nota de que pipe ("|") se usa para separar constantes. Se utilizará de nuevo más tarde para separar constantes. gluPerspective(45, (display[0] / display[1]), 0.1, 50.0)
#Determina la perpectiva
#(a,b,c)grado de campo de vision, ancho y altura de visualizacion
#valores(znear, zfar) planos de recorte cercano y lejanos
#el objeto solo sera visible entre estos dos recortes(perspectiva)
#plano de referrencia glTranslatef(0.0, 0.0, -5)#multiplica la matriz actual
#por una matriz de traducción, es para ver el cubo
#bucle de eventos while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() quit() glRotatef(1, 3, 1, 1)#multiplica la matriz actual
#por una de rotacion
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
#especificamos que estamos eliminando (lienzo el limpio) Cube()#llama la funcion pygame.display.flip()#actualiza la pantalla pygame.time.wait(10)#espera(tiempo wait) main()#funcion principal
El búfer doble, como se menciona en la descripción de las etiquetas, utiliza un bloque de memoria separado para aplicar todas las rutinas de dibujo y luego copia ese bloque (búfer) a la memoria de video como una sola operación. El no hacer esto puede llevar a artefactos gráficos. Un ejemplo simple podría ser el parpadeo de la escena causada por parte del fondo que se dibuja justo antes de que se actualice el video y luego otras partes (por lo que no se muestran hasta la próxima actualización).
Unidad 4: Figura 3D (Tetraedro)
Figura 3D (Tetraedro)
Código:
import pygame from pygame.locals import * from OpenGL.GL import * from OpenGL.GLU import * verticies = ( (0,0,0), (1,0, 0), (0.5,-0.46,0.73), (0.5, -0.84,-.19) ) edges = ( (1,0), (1,2), (1,3), (3,0), (3,2), (2,0) ) def Cube(): glBegin(GL_LINES) for edge in edges: for vertex in edge: glVertex3fv(verticies[vertex]) glEnd() def main(): pygame.init() display = (700, 500) 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()
miércoles, 28 de noviembre de 2018
Unidad 4: Figuras en 3D
Figuras en 3D
1. Gráfica de Barras (3D)
Código:
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='red') plt.show()
2. Cubo Basico en 3D
Código:
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()
3. Cubo a colores (3D)
Código:
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()
4. Pirámide en 3D
Código:
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()
Unidad 4: PROGRAMAS (INTERFAZ) parte 2/2
PROGRAMAS (INTERFAZ)
2. Programa películas, que agregar a un MENÚ
Código:
3. Programa que genera de determinado rango números aleatorios
Código:
4. Programa que manda saludos
Código:
1. Programa que permita usar el explorador de archivos
Código:
Código:
from Tkinter import * from tkFileDialog import askopenfilename root = Tk() root.geometry("500x500") root.title("Mostrar ruta fichero") 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()
2. Programa películas, que agregar a un MENÚ
Código:
from Tkinter import * root = Tk() root.geometry("500x500") root.title("Peliculas") def fun(): x = aux2.get() pelis.append(x) lol = OptionMenu(root, aux, *pelis).place(x=350, y=140) et1 = Label(root, text="Escribe el titulo de la pelicula").place(x=100, y=100) et2 = Label(root, text="Peliculas").place(x=350, y=100) aux=StringVar() aux.set("") aux2 = StringVar() pelis = [""] lol = OptionMenu(root, aux, *pelis).place(x=350, y=140) c1 = Entry(root, textvariable=aux2).place(x=100, y=140) b1 = Button(root, text="Ingresar", command=fun).place(x=100, y=170) root.mainloop()
3. Programa que genera de determinado rango números aleatorios
Código:
from Tkinter import * from random import * root = Tk() root.geometry("500x300") root.title("Generador de numeros") def funcion(): num = randint(int(aux.get()), int(aux2.get())) aux3.set(num) et1 = Label(root, text="Numero 1").place(x=100, y=50) et2 = Label(root, text="Numero 2").place(x=100, y=100) et3 = Label(root, text="Numero generado").place(x=100, y=150) 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=50) s2 = Spinbox(root, textvariable=aux2, values=arr2).place(x=300, y=100) caja = Entry(root, textvariable=aux3).place(x=300, y=150) b1 = Button(root, text="Generar", command=funcion).place(x=250, y=200) root.mainloop()
4. Programa que manda saludos
Código:
from Tkinter import * import tkMessageBox root = Tk() root.geometry("500x200") root.title("Saludador") et1 = Label(root, text = "Escribe un nombre para saludar:", font=("Arial",14,"bold")).place(x=100,y=50) entrada =StringVar() entrada.set('') caja11 = Entry(root, textvariable = str (entrada),width=30).place(x=100,y=100) b1 = Button(root, text = "Saludar", command = lambda: tkMessageBox.showinfo("Message", "Hola " + entrada.get() + "!")).place(x=300,y=100) root.mainloop()
martes, 27 de noviembre de 2018
Unidad 4: PROGRAMAS (INTERFAZ) parte 1/2
PROGRAMAS (INTERFAZ)
1. Programa que verifique la mayoría de edad utilizando Spinbox
Código:
# Ejemplo de Edad con Spinbox.- # Aportacion de: Valeria Esmeralda Vargas Requena 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()
2. Programa punto de venta
Código:# Programa punto de venta, cuenta billetes, monedas etc... # Aportacion de: Jose Manuel Sanchez Izaguirre 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()
3. Programa que consulta que signo zodiacal de acuerdo al mes y día de nacimiento
Código:#Aportacion de Cecilia Abigal Cantu Alcala #programa que saca el signo zodiacal import sys import Tkinter as tk from Tkinter import * import tkMessageBox ventana=Tk() ventana.title("Signo Zodiacal") ventana.geometry("400x200") ventana.config(bg="rosybrown") 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 value etiqueta_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()
4. Programa que diga si el indice de masa corporal es bueno
Código:
#Aportacion de Cecilia Abigal Cantu Alcala #programa que calcula IMC # -*- coding: utf-8 -*-import sys import 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="rosybrown") 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()
5. Programa Lista de películas
Código:
#!/usr/bin/python # -*- 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!!! from tkinter import Label,Entry,Button,Tk,Frame,W,N,S,E,END,HORIZONTAL,Spinbox from ttk import Combobox,Separator from tkMessageBox import askyesno,showinfo,showerror; #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") #Una pequeña "excepcion" por si el campo de texto para ingresar la pelicula esta vacio else: if (Classes.get()==""): #otra pequeña "excepcion" por si la clasificación de la pelicula no tiene seleccionada una clasificación showerror("What Movie it is?","Por favor selecciona una clasificación!") else: 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 añadido: \""+Movie+"\" A la lista de Peliculas") else: showinfo("Guess No","La Pelicula: "+Movie+" No sera añadida") 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()' else: 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 = "" 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()
6. Programa que calcula el Interés Generado Anual
Código:
# programa que calcula el interes anual # -*- coding: utf-8 -*- # !/usr/bin/env python import sys from Tkinter import * import tkMessageBox def interes(): #obtenesmos los valores de estos campos v1 = int(ent1.get()) v2 = int(ent2.get()) v3 = int(ent3.get()) #hacemos el calculo del interes generado r = v1 * v2 / 100 g = (r * v3) f = g + v1 #damos el result5ado final tkMessageBox.showinfo("Interes Total", "Cuando pasen " + str(v3) + " años, con un interes de " + str(v2) + " usted habrá generado " + str(f) + " pesos") print "Cuando pasen", v3, "años, 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="Años:") e3.grid(row=4, column=4, padx=(20, 20), pady=(20, 20)) val1 = "" ent1 = Entry(vp, width=12, textvariable=val1) ent1.grid(row=2, column=5) val2 = "" ent2 = Entry(vp, width=12, textvariable=val2) ent2.grid(row=3, column=5) val3 = "" ent3 = Entry(vp, width=12, textvariable=val3) ent3.grid(row=4, column=5) b1 = Button(vp, text="Calcular", command=interes) b1.grid(row=5, column=5, padx=(20, 20), pady=(20, 20)) v.mainloop()
7. Programa de Datos Básicos(Interfaz y uso de Grid)
Código:
# 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') 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()
8. Programa de Encriptación
Código:# -*- 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) # establezco el icono de ventana try: ventana.iconbitmap("icono.ico") except: print("no hay icono disponible") # Clave numclave = 1 # Funciones. def boton1(): # Cifrado Cesar TAM_MAX_CLAVE = 26 # defino el numero de letras del abecedario, en este caso el estadounidense def obtenerModo(): modo = "e" # defino el modo de encriptacion return modo def obtenerMensaje(): mensaje = text.get("0.0", END) # obtengo el contenido de la caja de texto return mensaje def obtenerClave(): global numclave # obtengo la clave, el numero de letras a recorrer el mensaje clave = numclave return clave def obtenerMensajeTraducido(modo, mensaje, clave): if modo[0] == 'd': # si el modo es igual a encriptar se resta un valor a la clave clave = -clave traduccion = '' # y la traduccion se resetea a caracteres en blanco for simbolo in mensaje: # El for se repetira el numero de veces tantos caracteres tenga el mensaje encriptado if simbolo.isalpha(): # si el caracter es alfanumerico num = ord(simbolo) # obtenemos el numero ascii num += clave # y lo sumamos la clave para obtener el caracter siquiente if simbolo.isupper(): # si el simbolo es Mayuscula if num > ord('Z'): # si el numero ascci es mayor a la z num -= 26 # Le restamos 26 para tener el caracter A elif num < ord('A'): # si el numero ascii es menor a la A num += 26 # sumamos 26 para obtener la Z # Se aplica el mismo procedimiento para las minusculas elif simbolo.islower(): if num > ord('z'): num -= 26 elif num < ord('a'): num += 26 # sin importar la condicion se agrega el numero ascii convertido a caracter a la variable traduccion traduccion += chr(num) else: # De lo contrario solo se agregara el simbolo a traduccion traduccion += simbolo return traduccion modo = obtenerModo() # obtenemos el modo mensaje = obtenerMensaje() # obtenemos el mensaje if modo[0] != 'b': # si el modo es diferente de b clave = obtenerClave() # obtenemos la clave texto = (obtenerMensajeTraducido(modo, mensaje, clave)) # conseguimos el texto escrito text.delete("0.0", END) # borramos e tecto actual text.insert("0.0", texto) # agregamos el nuevo texto informe1.config(text="Texto Encriptado") # mostramos el texto "texto encriptado" else: for clave in range(1, TAM_MAX_CLAVE + 1): # si desencriptamos hacemos el proceso inverso print(clave, obtenerMensajeTraducido('desencriptar', mensaje, clave)) # Hacemos el mismo proceso anterior pero e proceso inverso 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)) # definimos las opciones del menu 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()
9. Programa que oculta y muestra imagen
Código:
# -*- coding: utf-8 -*- # Programa.- que toma un archivo GIF y lo muestra import Tkinter as tk from Tkinter import * ventana = Tk() ventana.geometry('400x400') ventana.config(bg="black") ventana.title("Mostrando y ocultando un botón con una imagen") def btn_hide(): if b1.winfo_ismapped(): b1.place_forget() # Oculta la imagen b2.configure(text="Mostrar carita", width=15) # cambio el texto del boton else: b1.place(x=70, y=50) # muestra la imagen b2.configure(text="Ocultar carita", width=15) # cambio el texto del boton imgBoton = PhotoImage(file="angrybird.gif") b1 = tk.Button(ventana, text="Botón 1", image=imgBoton, fg="black", width=200) b1.place(x=90, y=50) b2 = Button(ventana, text="Ocultar Imagen", command=btn_hide, fg="black", width=15) b2.place(x=130, y=280) ventana.mainloop()
10. Programa Calendario
Código:
#!/usr/bin/python # -*- coding: utf-8 -*- # Aportacion.- Martin Cruz Alvarez # programa.- de Calendario import calendar import Tkinter as tk import datetime # Obtenemos los valores del año y mes a ano = datetime.date.today().year mes = datetime.date.today().month def writeCalendar(ano, mes): # Asignamos el año y mes al calendario str1 = calendar.month(ano, mes) label1.configure(text=str1) def mesAnterior(): global mes, ano mes -= 1 print mes print ano if mes == 0: # si el mes es 0 mes = 12 # el mes se resetea a 12 ano -= 1 # y se le resta un año a a fecha writeCalendar(ano, mes) def mesSiguiente(): global mes, ano mes += 1 if mes == 13: # si el mes 13 mes = 1 # se resetea el mes a 1 ano += 1 # y se suma un año a la fecha writeCalendar(ano, mes) root = tk.Tk() root.title("Calendario") # Lo posicionamos en un label label1 = tk.Label(root, text="", font=('courier', 40, 'bold'), bg='white', justify=tk.LEFT) label1.grid(row=1, column=1) # ponemos los botones dentro un Frame frame = tk.Frame(root, bd=5) anterior = tk.Button(frame, text="Anterior", command=mesAnterior) anterior.grid(row=1, column=1, sticky=tk.W) siguiente = tk.Button(frame, text="Siguiente", command=mesSiguiente) siguiente.grid(row=1, column=2) frame.grid(row=2, column=1) print ano, mes writeCalendar(ano, mes) # ejecutamos el evento loop root.mainloop()
11. Programa Multiplicador
Código:
# -*- coding: utf-8 -*- from Tkinter import * def hacer_click(): try: valor = int(entrada_texto.get()) valor = valor * 5 etiqueta.config(text = valor) except ValueError: etiqueta.config(text = "Introduzca un valor") def hacer_click2(): try: valor2 = int(entrada_texto2.get()) valor2 = valor2 * 10 etiqueta2.config(text = valor2) except ValueError: etiqueta2.config(text = "Introduzca un valor") def hacer_click3(): try: valor3 = int(entrada_texto3.get()) valor3 = valor3 * 15 etiqueta3.config(text = valor3) except ValueError: etiqueta3.config(text = "Introduzca un valor") app = Tk() #marco de la aplicacion con el obj Tk vp = Frame(app) #usamos el objeto frame '''ahora le damos formato a nuestra ventana, y para eso vamos a utilizar el metodo grid(), el cual nos va a permitir posicionar los elementos graficos en nuestra ventana. otro parametro que utilizaremos sera el margen: padx = (50,50) lo cual indica 50 pixeles del lado izquierdo y 50 pixeles del lado derecho luego utilizamos pady = (10,10), que son 10 pixeles en la parte superior y 10 pixeles en la parte inferior''' vp.grid(column = 0, row = 0, padx = (50,50), pady = (10,10)) '''luego vamos a utilizar los metodos columnconfigure() y rowconfigure() los cuales nos van a servir para dar un peso relativo del ancho y el alto de todos los elementos que se pongan en la ventana''' vp.columnconfigure(0, weight = 1) vp.rowconfigure(0, weight = 1) '''creamos una etiqueta llamada valor y la posicionamos con el metodo grid()''' etiqueta = Label(vp, text = "valor") #creo un objeto etiqueta etiqueta.grid(column = 100, row = 1) etiqueta2 = Label(vp, text = "valor 2") etiqueta2.grid(column = 100, row = 4) etiqueta3 = Label(vp, text = "valor 3") etiqueta3.grid(column = 100, row = 6) '''creamos un boton de OK y posicionamos con grid ''' boton = Button(vp, text = "Multiplicar por 5", command = hacer_click) boton.grid(column = 1, row = 1) boton1 = Button(vp, text = "Multiplicar por 10", command = hacer_click2) boton1.grid(column = 1, row = 4) boton2 = Button(vp, text = "Multiplicar por 15", command = hacer_click3) boton2.grid(column = 1, row = 6) valor ="" entrada_texto = Entry(vp, width = 10, textvariable = valor) entrada_texto.grid(column = 2, row = 1) valor2 = "" entrada_texto2 = Entry(vp, width = 10, textvariable = valor2) entrada_texto2.grid(column = 2, row = 4) valor3 = "" entrada_texto3 = Entry(vp, width = 10, textvariable = valor3) entrada_texto3.grid(column =2, row = 6) app.mainloop() #es el metodo mainloop, lanza la ventana
Suscribirse a:
Entradas (Atom)