Python - Ayuda, como ponerle sonido a una interfaz !

 
Vista:
sin imagen de perfil

Ayuda, como ponerle sonido a una interfaz !

Publicado por Yuvania (4 intervenciones) el 23/05/2018 14:38:41
Deseo que mi trivia contenga sonido en el momento que el usuario este respondiendo la pregunta pero el metodo sonido que realice, no me esta funcionando como deberia, puesto cuando compilo comienza a sonar pero hasta que termine el sonido, abre la ventana!

import os
from tkinter import *
from winsound import *
import random
import winsound

ventana = Tk()#Clase,heredara todas funciones de Tkinter
#winsound.Beep(300,1000)
#def sonidoIntento2():
# os.system("C:\Users\Yuvania Castillo\Documents\Python_Ejercicios\Tiburon tema de sonido.wav")
ventana.resizable(0,False)#False,True#0,0#Para redimensionar la ventana, se puede con 0,0 o true o false
ventana.title("Trivia")#Nombre a la ventana
ventana.iconbitmap("Question_Block_24685.ico")#icono a la ventana
ventana.geometry("800x500")#ancho#alto
ventana.config(bg="gold")#backgroud, color de la ventana
ventana.config(relief="ridge")
ventana.config(bd=15)
ventana.config(cursor="hand2")


##CREO EL FRAME
miFrame=Frame()
miFrame.pack()#empaquetar, o sea unir el frame a la raiz(meterlo xD)
#side="right""Let""bootom""top" #anchor=puntos cardinales "n"
#fill= x,y,both,none expand=true,0 o 1
miFrame.config(width="600" , height= "500")
miFrame.config(bg="navy blue")
#miFrame.config(bd=15)
#miFrame.config(relief="groove")
miFrame.config(cursor="hand2")

##Crear los labes
titulo=Label(miFrame, text="Trivia Race",bg="navy blue",fg="white",font=("Fixedsys",35))
titulo.place(x=130,y=10)
respuestas=Label(miFrame,text="Respuesta definitiva",bg="navy blue",fg="white",font=("MS Sans Serif",16))
respuestas.place(x=225,y=300)
opciones=Label(miFrame,text="Opciones",bg="navy blue",fg="white",font=("MS Sans Serif",16))
opciones.place(x=265,y=160)

#CUADRO DE TEXTO
cuadroPregunta=Entry(miFrame,justify='center')
cuadroPregunta.place(x=50,y=100, width=520)

cuadroRespuesta=Entry(miFrame,justify='center')
cuadroRespuesta.place(x=265,y=340,width=100)

cuadroOpcion1=Entry(miFrame,justify='center')
cuadroOpcion1.place(x=190,y=190,width=250)

cuadroOpcion2=Entry(miFrame,justify='center')
cuadroOpcion2.place(x=190,y=220,width=250)

cuadroOpcion3=Entry(miFrame,justify='center')#justify='center', para que el texto ingrese en el centro
cuadroOpcion3.place(x=190,y=250,width=250)

#METODOS DE LA TRIVIA
listaPreguntas = ["¿Cuál es el país menos turístico de Europa?","¿En cuál de los siguientes países NO hay ningún desierto?"," ¿Cuál de estos países africanos no tiene costa?"]
listaRespuestaCorrectas = ["Liechtenstein", "Alemania","Todas tienen costa" ]
listaRespuestasIncorrectas1=["Moldavia","España","Mauritania"]
listaRespuestasIncorrectas2=["Armenia","Mongolia","Senegal"]


posicionPregunta=random.randint(0,2)#La salida va a ser: 0, 1, 2 e incluye al 2

def obtenerRespuesta(respuesta):
if cuadroRespuesta.get()=="a":
return cuadroOpcion1.get()
elif cuadroRespuesta.get()=="b":
return cuadroOpcion2.get()
elif cuadroRespuesta.get()=="c":
return cuadroOpcion3.get()

def obtenerPregunta():
return cuadroPregunta.get()

def cargaPregunta():
cuadroPregunta.insert(0,listaPreguntas[posicionPregunta])

def cargarRespuesta():
numeroEntry=random.randint(0,2)#La salida va a ser: 0, 1, 2 e incluye al 2
#el numeroEntry nos sirve para que la respuesta correcta no se envie siempre en el mismo entry
if numeroEntry==0:#Si el numero es 0, en el primer entry se pondra la respuesta correcta
cuadroOpcion1.insert(0,listaRespuestaCorrectas[posicionPregunta])
cuadroOpcion2.insert(0,listaRespuestasIncorrectas1[posicionPregunta])
cuadroOpcion3.insert(0,listaRespuestasIncorrectas2[posicionPregunta])
elif numeroEntry==1:#Si el numero es 1, en el segundo entry se pondra la respuesta correcta
cuadroOpcion2.insert(0,listaRespuestaCorrectas[posicionPregunta])
cuadroOpcion1.insert(0,listaRespuestasIncorrectas1[posicionPregunta])
cuadroOpcion3.insert(0,listaRespuestasIncorrectas2[posicionPregunta])
elif numeroEntry==2:#Si el numero es 2, en el tercer entry se pondra la respuesta correcta
cuadroOpcion3.insert(0,listaRespuestaCorrectas[posicionPregunta])
cuadroOpcion1.insert(0,listaRespuestasIncorrectas1[posicionPregunta])
cuadroOpcion2.insert(0,listaRespuestasIncorrectas2[posicionPregunta])

def estadoInicial():

cuadroOpcion1.delete(0, 'end') # Esto borra el texto del Entry
cuadroOpcion2.delete(0, 'end') # Esto borra el texto del Entry
cuadroOpcion3.delete(0, 'end') # Esto borra el texto del Entry
cuadroPregunta.delete(0, 'end') # Esto borra el texto del Entry

def verificar(obtenerPregunta, obtenerRespuesta):

msj='Metodo verificar \n'
posicionPregunta=random.randint(0,2)#La salida va a ser: 0, 1, 2 e incluye al 2
if obtenerPregunta in listaPreguntas and obtenerRespuesta in listaRespuestaCorrectas:
msj+=' \nFunciono'
print("Respuesta Correcta")
estadoInicial()
#cargaPregunta()
#cargarRespuesta()

else:
msj+=' \nNO Funciono'
print("Respuesta Incorrecta")
estadoInicial()
#cargarRespuesta()
#cargarRespuesta()

return msj



def sonido():
if(ventana.mainloop()):
PlaySound("Tiburon tema de sonido",winsound.SND_FILENAME)



cargaPregunta()
cargarRespuesta()

#pongo los campos de texto en estado de lectura, despues de haberlos llenado o sino no funcionan y no muestran nada
cuadroOpcion1.config(state="readonly")
cuadroOpcion3.config(state="readonly")
cuadroOpcion2.config(state="readonly")
cuadroPregunta.config(state="readonly")
#Boton ingresar #En python cuando pongo en command, un metodo que lleva parenteris,lo que hace es realizar ese metodo automaticamente,y lo guarda en command
boton=Button(miFrame, text="Revisar",width=3,command=lambda:verificar(obtenerPregunta(),obtenerRespuesta(cuadroRespuesta.get())))#asi que para resolver ese defecto, se le agrega lambda
boton.place(x=250,y=410,width=130)
#print(obtenerPregunta())
#rint(obtenerRespuesta(cuadroRespuesta.get()))

sonido()

ventana.mainloop()#bucle infinito,porque una ventana
#debe mantenerse en ejecucion,para inicializar la ventana
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder