lunes, 12 de noviembre de 2018

imagenes con sonidos hilos



 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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import os #libreria para obtener rutas de direcciones
import random # Generar mumeros aleatorios
import threading #Libreria Para manejar hilos
from Tkinter import *#GUI,Label,botones,menu,entry,Tk,frame
import PIL
from PIL import Image, ImageTk#Tratar imagenes, PNG
import time #Para tiempos o espera o esperar o wait segundos
import pygame # Para juedos 2D y 3D

"""Variables globales"""
imagen=0
stop=0
dir = os.path.dirname(__file__)
Cimagenes=dir+"/imagenes/" #establece la ruta hacia las imagenes de imagenes
Csonido=dir+"/Sonidoss/" #establece la ruta hacia los sonidos
play=1
"""--------------------------------------------------------"""

def setimagen(nombre,x,y): #carga la imagen
    global imagen #Declaro el uso de una variable global
    img = Image.open(nombre) #cargo la imagen mandada como parametro
    img.thumbnail((x, y), Image.ANTIALIAS) #establezco sus dimensiones y la propiedad antialiasado
    imagen = ImageTk.PhotoImage(img) #la convierto a un formato soportado por los widgets de tkinter
    return imagen #retorno el objeto con la imagen

def play():
    global stop,play,TBoton #Declaro el uso de las variables stop y play
    """play: sirve para controlar la pulsasion del boton, si se pulsa una vez el boton jugar en pantalla deberia iniciar el juego
    pero si se vuelve a pulsar deberia detenerse y dado que se usa el mismo boton para ambas acciones la uso para controlar las acciones
    stop: se usa para controlar el hilo de ejecucion declarado, si stop vale 1 debera terminar el hilo, si vale 0 debera continuar hasta que se le indique"""
    if play==1:
        TBoton.set("Pausar")
        t=threading.Thread(target=hilo)
        t.start()
        stop=0 #El hilo continua con normalidad
        play=0 #La proxima vez que se pulse el boton debera entrar en el else
    else:
        TBoton.set("Iniciar")
        play=1 #La proxima vez que se pulse el boton debera entrar en el if
        stop=1 #Se detiene el hilo

def reproducirsonido(nombre):
    pygame.mixer.music.load(nombre)
    pygame.mixer.music.play()


def hilo():
    global tiempo, imagenes, Limagen,stop,Tetiqueta,spin
    imagenes = ["Gato", "Perro", "Casa", "Lapiz", "Gusano", "3D", "Flor", "Carro"]


    time.sleep(3)
    while True:
        nombre=str(imagenes.index(random.choice(imagenes))+1)
        carta = Cimagenes + nombre + ".png"
        Limagen.config(image=setimagen(carta,400,400))
        Tetiqueta.set(""+imagenes[int(nombre)-1])
        sonido=Csonido+nombre+".mp3"
        reproducirsonido(sonido)
        time.sleep(float(spin.get()))
        if stop==1:
            break


ventana=Tk()#Creamos una ventana tipo Tk()
ventana.wm_title("Imagenes Random con sonidos")
ventana.config(bg="gray")#con config y Bg es al fondo del color de la ventana
contenedor=Frame(ventana,width=700,height=700)#Poner un frame arriba de la ventana o Tk()
contenedor.pack()

Etitulo=Label(contenedor,text="Imagenes random",font=("Arial",40,"bold")).place(x=120,y=20)

Etiempo=Label(contenedor,text="Tiempo: ",font=("Arial",12,"bold"))
Etiempo.place(x=130,y=100)

spin=Spinbox(contenedor,values=[2,3,4,5,6,7,8,9,10,11,12],font=("Arial",12,"bold"))
spin.place(x=295,y=101)

Limagen=Label(contenedor)
Limagen.place(x=300,y=180)

TBoton=StringVar()
TBoton.set("Iniciar")
Bplay=Button(contenedor,textvariable=TBoton,command=play)
Bplay.place(x=500,y=98)

Tetiqueta=StringVar()
Enombre=Label(contenedor,textvariable=Tetiqueta,font=("Arial",40,"bold"))
Enombre.place(x=80,y=400)

def fin():
    ventana.destroy()

b = Button(text="Terminar programa", command=fin).place(x=550, y=150)

pygame.init()
ventana.mainloop()

No hay comentarios.:

Publicar un comentario