lunes, 5 de noviembre de 2018

Unidad 3: Imagen y sonido, uso de hilos y Button

Unidad 3: Imagen y sonido, uso de hilos y Button


En este programa se hace uso de los hilos, botones que iniciara y el de terminar para comenzar y parar las imágenes y sonidos.

Código:

from Tkinter import *
from PIL import Image, ImageTk
import os
import random
import sys
import pygame
import time
import threading

carpeta = os.path.dirname(__file__)
fotos = carpeta + "/imagenes/"
Sonidos = carpeta + "/sonidos/"

img = object
sonido = object
stop = object


def load():
    global fotos, img, label, label2, stop
    stop = 0
    while stop == 0:
        arreglo = ["CAT", "DOG", "HOUSE", "PENCIL", "WEAPON", "3D", "ROSE", "CAR"]
        eleccion_aleatoria = int(arreglo.index(random.choice(arreglo)))

        figura = fotos + str(eleccion_aleatoria + 1)+ ".png"
        imagen = Image.open(figura)
        imagen.thumbnail((500, 500), Image.ANTIALIAS)
        img = ImageTk.PhotoImage(imagen)
        label.config(image=img)
        print 'objeto > ' + arreglo[eleccion_aleatoria]  # muestra el nombre del objeto en consola
        label2.config(text=arreglo[int(eleccion_aleatoria)])
        # Para Reproducir sonido
        sonido = Sonidos + "s_"+ str(eleccion_aleatoria + 1) + ".mp3"  # obtengo la ruta del sonido correspondiente
        print figura  # muestra la direccion de la figura
        print sonido # muestra la direccion del sonido
        pygame.mixer.music.load(sonido)  # Abre el archivo
        pygame.mixer.music.play()  # Reproduce sonido
        time.sleep(2)
    print "Hilo terminado"


def stop():
    global stop
    print stop
    stop = 1
    print "stop = 1"

def play():
    hilo = threading.Thread(target=load)
    hilo.start()
    print "play"


pygame.init()  # inicializa el modulo de sonido de pygame
root = Tk()
root.geometry("500x500")
label = Label(root)
label.pack()
label2 = Label(root, text="", font=("Arial", 12, "bold"))
label2.pack()
btn1 = Button(root, text="Iniciar", command=play).pack(fill=X)
btn2 = Button(root, text="Terminar", command=stop).pack(fill=X)
root.mainloop()


Muestra el objeto nombre de la imagen que se va presentando, y la dirección donde se encuentra la imagen y sonido correspondiente.







No hay comentarios:

Publicar un comentario