unidad 5
PROGRAMA 1
from tkinter import * #Importa Tkinter: from tkinter import *
#importa todos los elementos de la biblioteca,
#lo que permite trabajar con interfaces gráficas
ventana = Tk() #Crea la ventana: ventana = Tk()
#inicializa una instancia de la ventana principal.
ventana.title("Bienvenida")# nombre de la ventana
ventana.mainloop() #mantiene la ventana abierta y en ejecución hasta que
#el usuario la cierre.
PROGRAMA 2
from tkinter import * #Importa Tkinter: from tkinter import *
#importa todos los elementos de la biblioteca,
#lo que permite trabajar con interfaces gráficas
ventana = Tk() #Crea la ventana: ventana = Tk()
#inicializa una instancia de la ventana principal.
ventana.title("Bienvenida")# nombre de la ventana
lbl= Label(ventana,text="hola capo como estas")
lbl.grid(column= 0 , row=0)
ventana.mainloop() #mantiene la ventana abierta y en ejecución hasta que
#el usuario la cierre.
PROGRAMA 3
from tkinter import * #es un biblioteca
ventana=Tk() # va a llamar el tkinter
ventana.title("Programacion Visual") #el titulo
ventana.geometry('350x200') #tamaño de la ventana
lbl=Label(ventana, text="Hola tu") #texto
lbl.grid(column=0,row=0) #posicion
btn= Button(ventana,text="Clic me ") #un boton
btn.grid(column=1,row=0) #posiocion del boton
ventana.mainloop()
PROGRAMA 4
from tkinter import * #es un biblioteca
ventana=Tk() # va a llamar el tkinter
ventana.title("Programacion Visual") #el titulo
ventana.geometry('350x200') #tamaño
lbl=Label(ventana, text="Hola tu")
lbl.grid(column=0,row=0)
btn= Button(ventana,text="Clic me ") #boton
btn.grid(column=1,row=0)
def clicked(): #funcion para presionar el boton
lbl.configure(text="El boton fue clicked !! ")
btn=Button(ventana,text="Click me", command=clicked)
btn.grid(column=1,row=0)
ventana.mainloop()
PROGRAMA 5
from tkinter import *
ventana =Tk()
ventana.title("programaciiiiion")
ventana.geometry("500x500") # tamaño de la ventana
lbl = Label(ventana,text = "esta es una etiqueta ")
lbl.grid(column=0,row=0) #posicion de la etiqueta
txt = Entry(ventana,width=10) # crea un campo donde el usario puede ingresar texto
txt.grid(column=0,row=1)
def clicked():
lbl.configure(text=txt.get()) #obtenemos lo que se escirbio y lo reescribimos en la etiqueta
btn = Button(ventana, text= "puchame", command=clicked)
btn.grid(column=0, row=2) #lo acomodamos el boton
ventana.mainloop()
PROGRAMA 6
#hagan un programa que pida el nombre en una entrada
#e imprimir en una etiqueta
from tkinter import * #es un biblioteca
ventana=Tk() # va a llamar el tkinter
ventana.title("Programacion Visual") #el titulo
ventana.geometry('350x200')
lbl=Label(ventana, text="Hola tu") #en la ventana escribimos en esto
lbl.grid(column=0,row=0) #posicion
txt=Entry(ventana,width=10)
txt.grid(column=1,row=0)
#funcion para crear un boton y pucharlo
def clicked():
lbl.configure(text=txt.get())
btn=Button(ventana,text="Click me", command=clicked)
btn.grid(column=2,row=0)
ventana.mainloop()
PROGRAMA 7
from turtle import *
t=Turtle()
screnn=t.getscreen()
setup(1240,780) #tamaño de la ventana
t.left(-90) #nos movemos
t.fd(300) #avanzamos
t.left(-90)
t.fd(200)
t.left(-90)
t.fd(300)
t.undo()
t.home() #regresamos al origen
screnn.exitonclick()
PROGRAMA 8
from turtle import *
t=Turtle()
screen=t.getscreen()
setup(640,480)
t.home()
t.left(90) #es para mober el angulo de la flecha
t.forward(200) #es para cuanto se mueba la flehca
t.left(-90)
t.fd(200)
t.left(-90)
t.fd(200)
t.left(-90)
t.home()
######terminar el cuatro !!!!!!!!!!!!!!!!!!!!!!!!
screen.exitonclick()
PROGRAMA 9
from turtle import *
t=Turtle()
r=50 #circulo de 50 de radio
t.circle(r) # lo dibujamos
t.left(180)
t.circle(r) #dibujamos otro
screen=t.getscreen()
screen.exitonclick()
PROGRAMA 10
from turtle import *
t=Turtle()
screen=t.getscreen()
r=50 # tamaño del circulo
t.color('blue') #color del contorno
t.fillcolor('IndianRed') #otro color
t.begin_fill()
t.circle(r)
t.end_fill()
t.left(180)
screen.exitonclick()
PROGRAMA 11
import turtle
t=turtle.Turtle()
screen=t.getscreen()
r=50 #circulo de radio = 50
turtle.colormode(255)
t.color(17,120,100) #color buscado en internet
t.begin_fill()
t.circle(r)
t.end_fill()
t.left(180)
screen.exitonclick()
PROGRAMA 12
import turtle
t=turtle.Turtle()
screen=t.getscreen()
r=10
n=3 # 3 circulos
turtle.colormode(255)#color buscado en internet
#t.color(17,120,100)
for i in range(1,n+1): #creamos un for pra dibujar varios circulos en forma de espiral
t.circle(r*i)
screen.exitonclick()
#rasberry pi pinout
PROGRAMA 13
import RPi.GPIO as GPIO #libreria para usar la rasberry pines de entrada y salida
import time #para poner delay
GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.OUT)
for i in range(0,5):
GPIO.output(18,GPIO.HIGH) #encendido
time.sleep(1)
GPIO.output(18,GPIO.low) #apagado
time.sleep(1)
GPIO.cleanup()
PROGRAMA 14
from turtle import * # importa la libreria turtle
t = Turtle()
screen = t.getscreen() # obtiene la pantalla donde se dibujara
t.shape('turtle') # cambia la forma del cursor a una tortuga
color = ['red', 'pink', 'orange', 'yellow', 'green', 'blue', 'purple'] # lista de colores para los trazos
t.speed(10) # establece la velocidad de la tortuga
for cada_color in color: # recorre la lista de colores
angle = 360 / len(color) # calcula el angulo de giro necesario para distribuir los circulos uniformemente
t.color(cada_color) # cambia el color de la tortuga
t.circle(40) # dibuja un circulo con radio 40
t.right(angle) # gira la tortuga a la derecha el angulo calculado
t.forward(30) # avanza hacia adelante para crear un efecto de separacion entre los circulos
print(360 / len(color)) # imprime el angulo de giro calculado
t.write('Felicidades') # escribe un mensaje en la pantalla
exitonclick()
PROGRAMA 15
from turtle import *
def princ():
t = Turtle()
title('Hello World') # Corregir el texto
setup(1000, 1000, 0, 0) # Tamaño de la ventana
t.penup() # Levantar el lapiz
t.goto(0, 0) # Mover la tortuga
t.color('navy') # Cambiar color
t.write('Hello World!', font=('Times New Roman', 36, 'bold')) # Escribir el texto
t.hideturtle() # Ocultar la tortuga
# Llamar a la función para que se ejecute
princ()
exitonclick() # Esperar el clic para cerrar la ventana
PROGRAMA 16
from turtle import *
t=Turtle()
import random
screen=t.getscreen()
t = Turtle()
bgcolor('black') #pone el color de la pantalla
colors = ['red', 'yellow', 'blue', 'green', 'orange', 'purple', 'white', 'gray']
t.speed(12) # velocidad
for n in range(15): #son cuantas veces hace la figura
t.pencolor(random.choice(colors)) #Cambia el color al aleatorio de la lista.
size = random.randint(10, 40) #Cambia un tamaño aleatorio entre 10 y 40 para la figura
#x = random.randrange(120, 150) #es para el rango que tiene para moverse la figura
#y = random.randrange(120, 150)
x = random.randint(-300, 300) #esto hace que se mueva por toda la pantalla
y = random.randint(-300, 300)
t.penup() # Levanta el lápiz de la tortuga.
t.setpos(x, y) #Mueve la tortuga directamente a la posición (x, y) en la pantalla
t.pendown() #Baja el lápiz otra vez para hacer la otra figura
for m in range(size):
t.forward(m * 2) #hace el la forma de la figura
t.left(91)
screen.exitonclick()
PROGRAMA 17
import turtle
t=turtle.Pen() #Pen() es un objeto que puedes mover, girar, cambiar de color, escribir, etc.
screen=t.getscreen()
turtle.bgcolor('black') #fondo de pantalla negro
colors=['red','yellow','blue','green']
nombre=turtle.textinput('Captura',' tu nombre ?') #se abre una ventana para escribir algo
t.speed(12) #velocidad
for x in range(100):
t.pencolor(colors[x%4]) #cambia de color en orden como esta en la lista y se repite
t.penup() #levanta el lapiz
t.forward(x*4) #esto crea el espiral Cuando x=0, no avanza.----Cuando x=1, avanza 4 pixeles.----Cuando x=2, avanza 8 pixeles.
t.pendown() #baja el lapiz
t.write(nombre,font=('Arial',int(x/4+4),'bold')) #el tipo de texto,que aumente el tamaño de la letra de pequeño a grande, y bold es como las letras negritas
t.left(92) #el angulo que gira esto permite el espiral
screen.exitonclick()
PROGRAMA 18
from turtle import *
# Crear una tortuga
t = Turtle()
screen = t.getscreen()
# Cambiar la forma de la tortuga para que se vea más visualmente atractiva
t.shape('turtle')
# Lista de números que usaremos para determinar la distancia del movimiento de la tortuga
lista_numeros = [1,2,3,4,5,6,7,8,9,10]
# Establecer el color de la línea en verde
t.color('green')
# Bucle que recorrerá cada número de la lista
for number in lista_numeros:
t.forward(number * 10) # La tortuga avanza una distancia proporcional al número en la lista
t.left(60) # Gira 60 grados a la izquierda, creando un patrón tipo estrella o hexagonal
# Mantiene la ventana abierta hasta que el usuario haga clic
exitonclick()
PROGRAMA 19
from turtle import *
# Crear la tortuga
t = Turtle()
# Configurar la pantalla
screen = t.getscreen()
setup(250, 250, 0, 0)
screensize(120, 120)
title('www.ITA.mx')
# Ocultar la tortuga
t.hideturtle()
# Pedir un numero al usuario
size = int(numinput("Entrada", "Ingrese un numero:", default=10)) # Agregue titulo y mensaje
# Mostrar el numero ingresado
t.penup()
t.goto(0, 0)
t.color("navy")
t.write(f"El numero es: {size}", font=("Times New Roman", 16, "bold"))
exitonclick()
PROGRAMA 20
from turtle import *
# Configuración de la pantalla
t = Turtle()
screen = t.getscreen()
screen.bgcolor('white')
t.speed(10)
# Dibujar pétalos
t.color('yellow')
t.penup()
t.goto(0,-50)
t.pendown()
t.speed(20) #la velocidad
for _ in range(18): # Hace 18 pétalos alrededor del centro
t.begin_fill()
t.circle(100,60)
t.left(120)
t.circle(100,60)
t.left(120)
t.end_fill()
t.right(20) # Rota ligeramente para formar el siguiente pétalo
# Dibujar centro del girasol
t.goto(0,-80)
t.pendown()
t.color('brown')
t.begin_fill()
t.circle(30)
t.end_fill()
# Escribir mensaje
t.penup()
t.goto(-60,80)
t.pendown()
t.color('red')
t.write("Te amo, mamá", font=("Arial", 16, "bold"))
t.hideturtle()
exitonclick()
PROGRAMA 21
import RPi.GPIO as GPIO # libreria para manejar los pines de la raspberry
import time # para hacer pausas en la ejecucion
PIN = 10 # definimos que pin vamos a usar
ESPERA = 0.5 # tiempo de espera entre cambios
# configuramos la raspberry para usar la numeracion fisica de los pines
GPIO.setmode(GPIO.BOARD)
# ponemos el pin como salida para poder controlar el led
GPIO.setup(PIN, GPIO.OUT)
while True:
GPIO.output(PIN, GPIO.HIGH) # encendemos el led
time.sleep(ESPERA) # esperamos un poco
GPIO.output(PIN, GPIO.LOW) # apagamos el led
time.sleep(ESPERA) # esperamos de nuevo
PROGRAMA 22
from tkinter import *
ventana=Tk()
ventana.geometry('300x300')# tamaño de la ventana
etiqueta=Label(ventana,text='Minimizar')
etiqueta.pack()
boton=Button(ventana,text='Minimizar',command=ventana.iconify)#minimizamos la pantalla
boton.pack()
ventana.mainloop()
PROGRAMA 23
from tkinter import *
def parpadear():
ventana.iconify()
ventana.after(2000, ventana.deiconify) # 2000 ms = 2 segundos es como un spam
ventana = Tk()
ventana.title("Segunda ventana en tkinter")
btn = Button(ventana, text='Evento', command=parpadear)
btn.pack()
ventana.mainloop()
#este programa parce un anuncio tipo spam
PROGRAMA 24
from tkinter import *
def imprime():
print('Acabas de dar click a imprimir')
cuadro=Tk()
cuadro.geometry('300x300')#tamaño de la ventana
cuadro.title('Dos botones')
btnS=Button(cuadro,text='Salir',fg='Red',command=cuadro.quit)#cierra la pestaña
btnS.pack(side=LEFT)
btnI=Button(cuadro,text='Imprime',fg='Blue',command=imprime)# lo imprime en el cmd
btnI.pack(side=RIGHT)
cuadro.mainloop()
PROGRAMA 25
from tkinter import *
ventana=Tk()
ventana.geometry('300x300')#tamaño de la ventana
ventana.title("Posiconamiento")
#agregamos las etiquetas y el boton
btn = Button(ventana, text="posicion uno").grid(row=0, column=1)#boton para psosciones
lbl1 = Label(ventana, text="posicion dos").grid(row=1, column=1)
lbl2 = Label(ventana, text="posicion tres").grid(row=2, column=1)
lbl3 = Label(ventana, text="posicion cuatro").grid(row=3, column=1)
ventana.mainloop()
PROGRAMA 26
from tkinter import *
ventana=Tk()
ventana.geometry('300x300')
ventana.title("Posiconamiento")
btn = Button(ventana, text="posicion uno").place(x=10,y=10)
lbl1 = Label(ventana, text="posicion dos").place(x=200,y=10)
lbl2 = Label(ventana, text="posicion tres").place(x=10,y=40)
lbl3 = Label(ventana, text="posicion cuatro").place(x=200,y=40)
ventana.mainloop()
#este ejercico hace lo mismo que el anterio solo cambiamos la manera de escribir
#las posciones donde queremos el texto o el boton y cambiarlo por cordenadas
PROGRAMA 27
from tkinter import *
# Esta funcion imprime un mensaje en consola
def saludo():
print("Te saludo")
# Esta funcion minimiza la ventana
def chiquito():
ventana.iconify()
# Se crea la ventana principal
ventana = Tk()
ventana.title("Ejercicio") # Se le da un titulo a la ventana
ventana.geometry("400x200") # Se establece el tamaño de la ventana
# Se crean y colocan los elementos en la ventana
lbl1 = Label(ventana, text="Click para saludar", fg="red").place(x=30, y=50)
btn1 = Button(ventana, text="Saludar", command=saludo, bg="red", fg="light gray").place(x=200, y=45)
lbl2 = Label(ventana, text="Click para minimizar", fg="blue").place(x=30, y=100)
btn2 = Button(ventana, text="Minimiza", command=chiquito, bg="blue", fg="lightgray").place(x=200, y=95)
ventana.mainloop()
PROGRAMA 28
from tkinter import *
# Esta funcion imprime en consola el nombre completo que el usuario escriba
def saluda():
print("Hola: " + nombre.get() + " " + apellidoP.get() + " " + apellidoM.get())
# Se crea la ventana principal
ventana = Tk()
ventana.geometry("400x200") # Tamaño de la ventana
ventana.title("Capture") # Titulo de la ventana
# Variables para guardar lo que el usuario escriba
nombre = StringVar()
apellidoP = StringVar()
apellidoM = StringVar()
nombre.set(" ")
# Etiquetas y campos de texto
lbln = Label(ventana, text="Nombre: ").place(x=0, y=10)
bxbn = Entry(ventana, textvariable=nombre).place(x=170, y=10)
lblap = Label(ventana, text="Apellido paterno").place(x=10, y=40)
bxap = Entry(ventana, textvariable=apellidoP).place(x=170, y=38)
lblam = Label(ventana, text="Apellido materno").place(x=10, y=70)
bxam = Entry(ventana, textvariable=apellidoM).place(x=170, y=70)
# Boton que ejecuta la funcion saluda
btns = Button(ventana, text="Te saludo", command=saluda).place(x=10, y=100)
# Inicia la ventana
ventana.mainloop()
PROGRAMA 29
from tkinter import *
def saluda():
mensaje.config(text="Hola: " + nombre.get() + " " + apellidoP.get() + " " + apellidoM.get())
ventana = Tk()
ventana.geometry("400x200")
ventana.title("Capture")
nombre = StringVar()
apellidoP = StringVar()
apellidoM = StringVar()
# Etiquetas y entradas
lbln = Label(ventana, text="Nombre: ").place(x=0, y=10)
bxbn = Entry(ventana, textvariable=nombre).place(x=170, y=10)
lblap = Label(ventana, text="Apellido paterno").place(x=0, y=40)
bxap = Entry(ventana, textvariable=apellidoP).place(x=170, y=40)
lblam = Label(ventana, text="Apellido materno").place(x=0, y=70)
bxam = Entry(ventana, textvariable=apellidoM).place(x=170, y=70)
# Etiqueta para el mensaje de saludo
mensaje = Label(ventana, text="", fg="blue")
mensaje.place(x=10, y=130)
# Boton con color de fondo
bts = Button(ventana, text="Te saludo", command=saluda, bg="lightgreen")
bts.place(x=10, y=100)
ventana.mainloop()
PROGRAMA 30
from tkinter import *
# funcion que realiza la operacion segun la opcion elegida
def operacion():
numero = num.get() # obtiene el numero ingresado en la caja de texto
if opcion.get() == 1: # si el usuario elige la opcion 1, multiplica por 10
total = numero * 10
elif opcion.get() == 2: # si elige la opcion 2, multiplica por 20
total = numero * 20
elif opcion.get() == 3: # si elige la opcion 3, multiplica por 30
total = numero * 30
elif opcion.get() == 4: # si elige la opcion 4, multiplica por 40
total = numero * 40
elif opcion.get() == 5: # si elige la opcion 5, multiplica por 50
total = numero * 50
else: # si no elige ninguna de las anteriores, eleva el numero al cuadrado
total = numero * numero
Label(ventana, fg="blue", text="resultado: " + str(total)).place(x=100, y=220) # muestra el resultado en la ventana
# crea la ventana grafica
ventana = Tk()
opcion = IntVar() # variable para almacenar la opcion elegida
num = IntVar() # variable para almacenar el numero ingresado
ventana.title("botones de radio") # titulo de la ventana
ventana.geometry("400x300") # tamaño de la ventana
Label(ventana, text="escribe un numero : ").place(x=22, y=20) # etiqueta para pedir el numero
Entry(ventana, bd=3, textvariable=num).place(x=150, y=20) # caja de texto para ingresar el numero
Label(ventana, text="elige tu opcion: ").place(x=20, y=50) # etiqueta para indicar las opciones disponibles
# botones de radio para seleccionar la operacion
Radiobutton(ventana, text="x10", value=1, variable=opcion).place(x=70, y=70)
Radiobutton(ventana, text="x20", value=2, variable=opcion).place(x=70, y=90)
Radiobutton(ventana, text="x30", value=3, variable=opcion).place(x=70, y=110)
Radiobutton(ventana, text="x40", value=4, variable=opcion).place(x=70, y=130)
Radiobutton(ventana, text="x50", value=5, variable=opcion).place(x=70, y=150)
Radiobutton(ventana, text="cuadro", value=6, variable=opcion).place(x=120, y=70)
Button(ventana, text="realiza operacion", command=operacion).place(x=20, y=180) # boton para ejecutar la operacion
ventana.mainloop() # inicia la ventana grafica
PROGRAMA 31
#Calculador de IMC
#Datos a pedir
#Nombre, altura, peso
from tkinter import *
ventana = Tk()
ventana.title("uso de imagenes en tkinter")
ventana.geometry("1200x800") # tamaño
foto = PhotoImage(file="pa.png") # asegurarse de que la imagen existe y es formato .png
fondo = Label(ventana, image=foto)
fondo.place(x=1, y=1) #posicion de la foto
ventana.mainloop()
PROGRAMA 32
from tkinter import *
from tkinter import messagebox # se importa messagebox para mostrar mensajes emergentes
# funcion que obtiene el valor del spinbox seleccionado y lo muestra en un mensaje
def obtener():
messagebox.showinfo("mensaje", "seleccion es: " + valor.get())
# se crea la ventana grafica
ventana = Tk()
ventana.title("uso de spinbox") # titulo de la ventana
ventana.geometry("400x200") # tamaño de la ventana
valor = StringVar() # variable que almacenara el valor seleccionado en el spinbox
Label(ventana, text="ejemplo 1 spinbox").place(x=20, y=20) # etiqueta con el titulo
# spinbox que permite elegir entre opciones predefinidas
Spinbox(ventana, values=("uno", "dos", "tres", "cuatro", "cinco")).place(x=20, y=50)
# otro spinbox pero que permite elegir numeros entre 1 y 10
Spinbox(ventana, from_=1, to=10, textvariable=valor).place(x=20, y=110)
# boton que, cuando se presiona, ejecuta la funcion obtener() y muestra el valor seleccionado
Button(ventana, text="obtener valor spinbox", command=obtener).place(x=90, y=140)
mainloop() # inicia la ventana grafica
PROGRAMA 33
#Calculador de IMC
#Datos a pedir
#Nombre, altura, peso
#poner una imagen
from tkinter import *
# Crear la ventana
ventana = Tk()
ventana.title("Calculadora de IMC")
ventana.geometry("1200x1200") # Tamaño
# Imagen de fondo
foto = PhotoImage(file="indices.png") # Asegurarse de que la imagen existe y es formato .png
fondo = Label(ventana, image=foto)
fondo.place(x=1, y=1)
# pediremos que ingrese 3 datos
#nombre
Label(ventana, text="Nombre:").place(x=50, y=50)
nombre_entry = Entry(ventana)
nombre_entry.place(x=120, y=50)
#PESO
Label(ventana, text="Peso (kg):").place(x=50, y=100)
peso_entry = Entry(ventana)
peso_entry.place(x=120, y=100)
# altura
Label(ventana, text="Altura (m):").place(x=50, y=150)
altura_entry = Entry(ventana)
altura_entry.place(x=120, y=150)
# Funcion para calcular el IMC
def calcular_imc():
try:
peso = float(peso_entry.get())
altura = float(altura_entry.get())
imc = peso / (altura ** 2)
resultado_label.config(text=f"Indice de masa corporal: {imc:.2f}") #CON 2 DECIMALES
except ValueError: #SI NO INGRESA UN DATO CORRECTO
resultado_label.config(text="ingresa lo que se te pide") #VUELVE A INTENTARLO
# Boton para calcular IMC
boton_calcular = Button(ventana, text="Calcular IMC", command=calcular_imc)
boton_calcular.place(x=70, y=200)
# Etiqueta para mostrar el resultado
resultado_label = Label(ventana, fg="black", text="INDICE DE MASA CORPORAL:")
resultado_label.place(x=100, y=250)
ventana.mainloop()
PROGRAMA 34
import sys, time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
# configuracion de pines como salida
GPIO.setup(11, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(15, GPIO.OUT)
# secuencia de encendido y apagado de los leds
GPIO.output(11, 1)
time.sleep(1)
GPIO.output(13, 1)
time.sleep(1)
GPIO.output(15, 1)
time.sleep(1)
GPIO.output(11, 0)
time.sleep(1)
GPIO.output(13, 0)
time.sleep(1)
GPIO.output(15, 0)
time.sleep(1)
GPIO.output(11, 1)
GPIO.output(13, 0)
GPIO.output(15, 1)
time.sleep(1)
GPIO.output(11, 1)
GPIO.output(13, 1)
GPIO.output(15, 1)
time.sleep(1)
GPIO.output(11, 0)
GPIO.output(13, 1)
GPIO.output(15, 1)
time.sleep(1)
GPIO.output(11, 0)
GPIO.output(13, 0)
GPIO.output(15, 0)
time.sleep(1)
GPIO.cleanup() # limpia la configuracion de los pines al terminar
PROGRAMA 35
import sys, time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD) # establece la numeracion fisica de los pines
# configuracion de pines como salida
GPIO.setup(11, GPIO.OUT)
GPIO.output(11, 1) # enciende el led conectado al pin 11
GPIO.setup(13, GPIO.OUT)
GPIO.output(13, 1) # enciende el led conectado al pin 13
GPIO.setup(15, GPIO.OUT)
GPIO.output(15, 1) # enciende el led conectado al pin 15
try:
while True:
solicitud = input("RGB--> ")
solicitud = str(solicitud)
if len(solicitud) == 3: # verifica que tenga 3 caracteres
GPIO.output(11, int(solicitud[0])) # asigna el valor de la primera posicion al led rojo
GPIO.output(13, int(solicitud[1])) # asigna el valor de la segunda posicion al led verde
GPIO.output(15, int(solicitud[2])) # asigna el valor de la tercera posicion al led azul
else:
GPIO.cleanup()
except KeyboardInterrupt:
GPIO.cleanup() # si el usuario interrumpe el programa con Ctrl+C, apaga los leds y libera los pines
PROGRAMA 36
from tkinter import *
ventana = Tk()
ventana.title("simon dice ")# titulo de la vantana
ventana.geometry("500x500")
icono = PhotoImage(file = "LogoITA.png")#le popnemos un logo ala ventana
#para boton rojo
r=PhotoImage(file="rojo.png")
image = r
br = r.subsample(3,3)
btnr=Button(ventana,width=100,height=100,image= br)
btnr.grid(column=0,row=0)
#para boton verde
v=PhotoImage(file="verde.png")
image = v
bv = v.subsample(1,1)
btnv=Button(ventana,width=100,height=100,image= bv)
btnv.grid(column=0,row=1)
#para boton amarillo
a=PhotoImage(file="amarillo.png")
image = a
ba = a.subsample(1,1)
btna=Button(ventana,width=100,height=100,image= ba)
btna.grid(column=1,row=0)
#para boton azul
z=PhotoImage(file="azul.png")
image = z
bz = z.subsample(1,1)
btnz=Button(ventana,width=100,height=100,image= bz)
btnz.grid(column=1,row=1)
#para boton alto
x=PhotoImage(file="stop.png")
image = x
bx = x.subsample(10,10)
btnx=Button(ventana,width=100,height=100,image= bx)
btnx.grid(column=0,row=3)
#para boton play
y=PhotoImage(file="plaay.png")
image = y
by = y.subsample(10,10)
btny=Button(ventana,width=100,height=100,image= by)
btny.grid(column=1,row=3)
ventana.iconphoto(True,icono)
ventana.mainloop()
#lo que hicimos en este programa fue crear a simon dice ,es un codigo muy
#repetitivo por que utilizamos los mismos metodos para los 4 colores de
#simon dice
PROGRAMA 37
from tkinter import *
ventana = Tk()
ventana.title("simon dice ")# titulo de la vantana
ventana.geometry("300x400")
icono = PhotoImage(file = "LogoITA.png")#le popnemos un logo ala ventana
lcol= [] #hacemos una lista de colores vacia
color = "nada"
def limpia():
global color
color = ""
lbl = Lbel(ventana,text=color)
lbl.grid(column=0,row=0)
def clicked(col):
global color
global lcol
if col == 1:
limpia()
color = ""
lbl = Label(ventana, text=color)
lbl.grid(column=0, row=4)
color = "rojo"
lbl = Label(ventana, text=color)
elif col == 2:
color = ""
lbl = Label(ventana, text=color)
lbl.grid(column=0, row=4)
color = "verde"
lbl = Label(ventana, text=color)
elif col == 3:
limpia()
color = "amarillo"
lbl = Label(ventana,text=color)
lcol.append(3)
elif col == 4:
limpia()
color = "azul"
lbl = Label(ventana,text=color)
lcol.append(4)
elif col == 5:
pass
elif col==6:
cad= " "
limpia()
color= " reproducir "
cad+str(col/n)
print(lcol)
#para boton rojo
r=PhotoImage(file="rojo.png")
image = r
br = r.subsample(3,3)
btnr=Button(ventana,width=100,height=100,image= br)
btnr.grid(column=0,row=0)
#para boton verde
v=PhotoImage(file="verde.png")
image = v
bv = v.subsample(1,1)
btnv=Button(ventana,width=100,height=100,image= bv)
btnv.grid(column=0,row=1)
#para boton amarillo
a=PhotoImage(file="amarillo.png")
image = a
ba = a.subsample(1,1)
btna=Button(ventana,width=100,height=100,image= ba)
btna.grid(column=1,row=0)
#para boton azul
z=PhotoImage(file="azul.png")
image = z
bz = z.subsample(1,1)
btnz=Button(ventana,width=100,height=100,image= bz)
btnz.grid(column=1,row=1)
#para boton alto
x=PhotoImage(file="stop.png")
image = x
bx = x.subsample(10,10)
btnx=Button(ventana,width=100,height=100,image= bx)
btnx.grid(column=0,row=3)
#para boton play
y=PhotoImage(file="plaay.png")
image = y
by = y.subsample(10,10)
btny=Button(ventana,width=100,height=100,image= by)
btny.grid(column=1,row=3)
ventana.iconphoto(True,icono)
ventana.mainloop()
PROGRAMA 38
from tkinter import *
import tkinter as tk
import os
from tkinter import messagebox
from tkinter import simpledialog
import pygame
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(3,GPIO.OUT)
GPIO.setup(5,GPIO.OUT)
GPIO.setup(7,GPIO.OUT)
GPIO.output(3,0)
GPIO.output(5,0)
GPIO.output(7,0)
pygame.mixer.init() # Inicializa el mixer
ventana = Tk()
ventana.title("Simon Dice")
ventana.geometry("300x400")
icono = PhotoImage(file="logoITA.png")
ventana.iconphoto(True, icono)
color = ""
lcol = []
try:
sonido_rojo = pygame.mixer.Sound("sonido_rojo.mp3")
sonido_verde = pygame.mixer.Sound("sonido_verde.mp3")
sonido_amarillo = pygame.mixer.Sound("sonido_amarillo.mp3")
sonido_azul = pygame.mixer.Sound("sonido_azul.mp3")
sonido_play = pygame.mixer.Sound("sonido_play.mp3")
sonido_stop = pygame.mixer.Sound("sonido_stop.mp3")
except pygame.error as e:
messagebox.showwarning("Error", f"Error al cargar sonidos: {e}")
def limpia():
color = " "
lbl = Label(ventana, text=color)
lbl.grid(column=0, row=4)
def clicked(col):
global color
global lcol
if col == 1:
limpia()
color = "rojo"
lbl = Label(ventana, text=color)
lcol.append(1)
sonido_rojo.play()
elif col == 2:
limpia()
color = "verde"
lbl = Label(ventana, text=color)
lcol.append(2)
sonido_verde.play()
elif col == 3:
limpia()
color = "azul"
lbl = Label(ventana, text=color)
lcol.append(3)
sonido_azul.play()
elif col == 4:
limpia()
color = "amarillo"
lbl = Label(ventana, text=color)
lcol.append(4)
sonido_amarillo.play()
elif col == 5:
limpia()
color = "juega"
lbl = Label(ventana, text=color)
lcol.append(5)
sonido_play.play()
elif col == 6:
limpia()
color = "alto"
lbl = Label(ventana, text=color)
lcol.append(6)
sonido_stop.play()
guardar_partida() # Se guarda la partida automáticamente al presionar "alto"
# Desactivar botones menos el de play
btnr.config(state=DISABLED)
btnv.config(state=DISABLED)
btnm.config(state=DISABLED)
btna.config(state=DISABLED)
btnpara.config(state=DISABLED)
btnjuega.config(state=NORMAL)
else:
color = "algo"
lbl = Label(ventana, text=color)
lbl.grid(column=0, row=4)
# Botones de colores
r = PhotoImage(file="rojo.png")
br = r.subsample(3, 3)
btnr = Button(ventana, width=100, height=100, image=br, command=lambda: clicked(1))
btnr.grid(column=0, row=0)
v = PhotoImage(file="verde.png")
bv = v.subsample(3, 3)
btnv = Button(ventana, width=100, height=100, image=bv, command=lambda: clicked(2))
btnv.grid(column=1, row=0)
m = PhotoImage(file="azul.png")
bm = m.subsample(3, 3)
btnm = Button(ventana, width=100, height=100, image=bm, command=lambda: clicked(3))
btnm.grid(column=0, row=1)
a = PhotoImage(file="amarillo.png")
ba = a.subsample(3, 3)
btna = Button(ventana, width=100, height=100, image=ba, command=lambda: clicked(4))
btna.grid(column=1, row=1)
# Botón para play
pl = PhotoImage(file="plaay.png")
bjuega = pl.subsample(3, 3)
def activar_botones():
btnr.config(state=NORMAL)
btnv.config(state=NORMAL)
btnm.config(state=NORMAL)
btna.config(state=NORMAL)
btnpara.config(state=NORMAL)
sonido_play.play()
btnjuega = Button(ventana, width=100, height=100, image=bjuega, command=activar_botones)
btnjuega.grid(column=0, row=2)
# Botón para alto
al = PhotoImage(file="stop.png")
bpara = al.subsample(3, 3)
btnpara = Button(ventana, width=100, height=100, image=bpara, command=lambda: clicked(6))
btnpara.grid(column=1, row=2)
# Desactivar todos menos btnjuega al inicio
btnr.config(state=DISABLED)
btnv.config(state=DISABLED)
btnm.config(state=DISABLED)
btna.config(state=DISABLED)
btnpara.config(state=DISABLED)
# Guardar partida
def guardar_partida():
nombre = simpledialog.askstring("Guardar partida", "Nombre del archivo:")
if nombre:
with open(f"{nombre}.txt", "w") as f:
f.write(",".join(map(str, lcol)))
messagebox.showinfo("Guardado", f"Partida guardada como {nombre}.txt")
# Mostrar partidas
def mostrar_partidas():
archivos = [f for f in os.listdir() if f.endswith(".txt")]
if archivos:
archivo = simpledialog.askstring("Mostrar partida", "Escribe el nombre del archivo (sin .txt):\n" + "\n".join([a.replace(".txt", "") for a in archivos]))
if archivo and f"{archivo}.txt" in archivos:
with open(f"{archivo}.txt", "r") as f:
contenido = f.read()
messagebox.showinfo("Contenido de la partida", contenido)
# Reproducir la secuencia
secuencia = [int(x) for x in contenido.split(",") if x.isdigit()]
reproducir_partida(secuencia)
else:
messagebox.showinfo("Error", "Archivo no encontrado.")
else:
messagebox.showinfo("Partidas guardadas", "No hay archivos .txt guardados.")
btnmostrar = Button(ventana, text="Mostrar partidas", command=mostrar_partidas)
btnmostrar.grid(column=1, row=3, pady=10)
# Reproducir partida guardada
def reproducir_partida(secuencia):
btnr.config(state=DISABLED)
btnv.config(state=DISABLED)
btnm.config(state=DISABLED)
btna.config(state=DISABLED)
btnpara.config(state=DISABLED)
btnjuega.config(state=DISABLED)
botones = {1: btnr, 2: btnv, 3: btnm, 4: btna, 5: btnjuega, 6: btnpara}
colores = {1: "rojo", 2: "verde", 3: "azul", 4: "amarillo", 5: "Inicia el juego", 6: "Fin del Juego"}
color_flash = {1: "#ff8080", 2: "#80ff80", 3: "#c080ff", 4: "#ffff80", 5: "#d0ffd0", 6: "#ffd0d0"}
sonidos = {1: sonido_rojo, 2: sonido_verde, 3: sonido_azul, 4: sonido_amarillo, 5: sonido_play, 6: sonido_para}
leds = {1: 3, 2: 5, 3: 7} # LED GPIO para cada color
def mostrar_color(idx):
# Apaga todos los LEDs antes de encender el siguiente
GPIO.output(3, 0)
GPIO.output(5, 0)
GPIO.output(7, 0)
if idx < len(secuencia):
num = secuencia[idx]
color = colores.get(num, "SystemButtonFace")
limpia()
lbl = Label(ventana, text=color)
lbl.grid(column=0, row=4)
btn = botones.get(num)
if btn:
original = btn.cget("bg")
btn.config(bg=color_flash.get(num, "white"))
ventana.after(400, lambda: btn.config(bg=original))
sonido = sonidos.get(num)
if sonido:
sonido.play()
# Enciende el LED correspondiente si existe
if num in leds:
GPIO.output(leds[num], 1)
ventana.after(400, lambda: GPIO.output(leds[num], 0))
ventana.after(700, lambda: mostrar_color(idx + 1))
else:
limpia()
btnjuega.config(state=NORMAL)
# Apaga todos los LEDs al terminar
GPIO.output(3, 0)
GPIO.output(5, 0)
GPIO.output(7, 0)
mostrar_color(0)
ventana.mainloop()
Comentarios
Publicar un comentario