domingo, 4 de noviembre de 2018

Depliegue de imagenes y sonido con hilos (Practica No. 13)

Sintaxis del programa:

from Tkinter import *  # crea la GUI
from PIL import Image, ImageTk
import pygame  # ayuda a reproducir audios mp3

import os  # permite manipular archivos
import random
import time
import threading

dir = os.path.dirname(__file__)  # lo utiliza para agregar una ruta
fotos = dir + "/imagenes/"  # guarda la direccion de la carpeta mas la carpeta donde esten
sonidos = dir + "/imagenes/"  # lo mismo en esta con los audios

play= 0
foto = object
sonido = object


def Mostrar_imagenes():
    global play,fotos,foto,etiqueta,nombre
    play=1
    while play==1:
        array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]  # crea un arreglo con el nombre de las imagenes
        animales = ["Squirel", "Kitty", "Raccoon", "Panda", "Cat", "Slot", "Husky", "Labrador", "Dolphin", "Pug", "Poodle"]

        imagen_seleccionada = random.choice(array)
        selectimagen = str(array.index(imagen_seleccionada) + 1)  # elige una imagen aleatoria
        selectnombre = animales[imagen_seleccionada - 1]
        figura = fotos + selectimagen + ".png"  # guardar la foto seleccionada

        "Como despliego la imagen en la ventana Tk"
        img = Image.open(figura)  # abre la imagen seleccionada
        img.thumbnail((300, 300), Image.ANTIALIAS)  # le da un tamano igual a todas las imagenes
        foto = ImageTk.PhotoImage(img)  # convierte la imagen a un archivo que tkinter pueda mostrar
        etiqueta= Label(root,image=foto).place(x=120, y=130)
        nombre = Label(root,text=selectnombre, font=("Harlow Solid Italic", 30), fg="purple").place(x=180, y=60)
        # para reproducir sonido
        sonido = sonidos + selectimagen + ".mp3"  # guarda el audio con el numero de foto que se selecciono
        print sonido
        pygame.mixer.init()  # inicia el reproductor
        pygame.mixer.music.load(sonido)  # carga el archivo de audio
        pygame.mixer.music.play()  # comienza a reproducir el audio
        time.sleep(3)

def detener():
    global play
    play=0

def Iniciar():
    hilo1=threading.Thread(target=Mostrar_imagenes)
    hilo1.start()


root = Tk()
root.geometry("500x500")
Titulo= Label(root,text="Imagenes mostradas al azar",font=("PhrasticMedium", 20)).place(x=100, y=10)

iniciar=StringVar()
iniciar.set("Iniciar")
Boton_Iniciar= Button(root,textvariable=iniciar,font=("Martina", 14),fg="green",command=Iniciar).place(x=90,y=450)
Detener=StringVar()
Detener.set("Detener")
Boton_parar=Button(root,textvariable=Detener,font=("Martina", 14),fg="red",command=detener).place(x=410,y=450)
pygame.init()
root.mainloop()


Corrida en pantalla de la interfaz




No hay comentarios.:

Publicar un comentario