03-08-2022, 08:40 PM
hola, aclaro que soy super novato y lo que hice fue adaptar dos scripts , los cuales por separado funcionan bien.
la idea es lograr que el programa haga un random y cambie el color de fondo y el contenido de un texto por comandos de voz. Aclaro que esa parte estaría funcionando.
El problema se surge cuando quiero cerrarlo con esc o quit utilizando pygame.event, aclaro que si empleo el comando de voz el programa se cierra perfectamente.
me gustaría que me den una mano para lograr que el programa se pueda cerrar utilizando esc y/o quit
script cambia color por orden de voz
script cambia color por tiempo
les agradecería que me puedan ayudar
saludos...
la idea es lograr que el programa haga un random y cambie el color de fondo y el contenido de un texto por comandos de voz. Aclaro que esa parte estaría funcionando.
El problema se surge cuando quiero cerrarlo con esc o quit utilizando pygame.event, aclaro que si empleo el comando de voz el programa se cierra perfectamente.
me gustaría que me den una mano para lograr que el programa se pueda cerrar utilizando esc y/o quit
script cambia color por orden de voz
Código:
import speech_recognition as sr
import pyttsx3
import pywhatkit
from cambia_color import *
import pygame
import random
import time
import sys
from pygame.locals import *
pygame.init()
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
Ncolores = ['marrón', 'verde', 'azul', 'violeta',
'amarillo', 'rojo', 'naranja', 'rosado']
# 01234567
colores = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (159, 0, 255),
(159, 0, 255), (128, 64, 0), (255, 192, 0), (255, 160, 216)]
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('rate', 145)
#linux
engine.setProperty('voice', 'spanish-latin-am+f2')
# win10
#engine.setProperty('voice', voices[0].id)
def talk(text):
engine.say(text)
engine.runAndWait()
def listen():
listener = sr.Recognizer()
with sr.Microphone() as source:
listener.adjust_for_ambient_noise(source, duration=0.5)
#print("Escuchando...")
audio = listener.listen(source)
try:
#rec = listener.recognize_google(audio, language='es-AR')
rec = listener.recognize_google(audio, language='es-AR')
rec = rec.lower()
return rec
except sr.UnknownValueError:
talk("No entendí")
#pass
except sr.RequestError as e:
#talk("No entendí")
pass
except:
talk("No entendí")
#pass
def cerrar():
#event = pygame.event.wait()
'''es = True
while es:
for event in pygame.event.get():
if event.type == pygame.QUIT:
es=False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
es=False
pygame.quit()
sys.exit()'''
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
pygame.quit()
sys.exit()
def cambiaColor_():
screen.fill(colores[random.randint(0, 7)])
fuente = pygame.font.SysFont('arial', 80)
texto = fuente.render(Ncolores[random.randint(0, 7)], True, (252, 252, 252))
text_rect = texto.get_rect(center=(width/2, height/2))
screen.blit(texto, text_rect)
pygame.draw.circle(screen, (0, 0, 0), (width/2, height/1.6), 8)
pygame.display.update()
'''for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
pygame.quit()
sys.exit()'''
def run_escuchar():
cambiaColor_()
es=True
while es:
rec=listen()
try:
if "cambiar" in rec:
cambiaColor_()
elif "cerrar" in rec:
es=False
except:
pass
cerrar()
if __name__ == "__main__":
run_escuchar()
script cambia color por tiempo
Código:
import pygame
import random
import time
import sys
from pygame.locals import *
pygame.init()
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
Ncolores = ['marrón', 'verde', 'azul', 'violeta',
'amarillo', 'rojo', 'naranja', 'rosado']
# 01234567
colores = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (159, 0, 255),
(159, 0, 255), (128, 64, 0), (255, 192, 0), (255, 160, 216)]
def cerrar():
#event = pygame.event.wait()
es = True
while es:
for event in pygame.event.get():
if event.type == pygame.QUIT:
es=False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
es=False
pygame.quit()
sys.exit()
def cambiaColor_():
while True:
screen.fill(colores[random.randint(0, 7)])
fuente = pygame.font.SysFont('arial', 80)
texto = fuente.render(Ncolores[random.randint(0, 7)], True, (252, 252, 252))
text_rect = texto.get_rect(center=(width/2, height/2))
screen.blit(texto, text_rect)
pygame.draw.circle(screen, (0, 0, 0), (width/2, height/1.6), 8)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
pygame.quit()
sys.exit()
time.sleep(2)
if __name__ == "__main__":
cambiaColor_()
les agradecería que me puedan ayudar
saludos...