如何使用触发器停止无限循环



我希望程序播放声音,直到用户自己停止程序

我的代码:

import pathlib,time
from pydub import AudioSegment
from pydub.playback import play
from gtts import gTTS 
english=["school", "book", "theater"]
select = str(input("press ENTER to Start Stop=>'s':"))
elements=('', 'p')
while True:  
if select not in elements:
print("Please Correct Selection--")
continue
elif select in elements:
for pick in english:
index = english.index(pick)
eng = pick
print(index, "-> ", eng)
text_eng = eng
my_eng_obj = gTTS(text=eng, lang="en", slow=False)
text_eng = text_eng.replace(" ", "_")
try:
file_en = pathlib.Path(text_eng + ".mp3")
if file_en.exists():
song_s = AudioSegment.from_mp3(file_en)
play(song_s)
pass
else:
my_eng_obj.save(text_eng + ".mp3")
song_s = AudioSegment.from_mp3(file_en)
play(song_s)
except:
pass
time.sleep(0.2)

音响部分工作正常。我需要无限循环部分。如何使用输入进行中断?

试试这个:

trigger = False

while True:  # infinite loop
# Do something
# Do something to make trigger True. Keep it false if you want to keep the loop running
if 1 + 1 == 2:  # Example comparison
trigger = True
print("Hello World")
if trigger:
break

你可以试试这个:

# Modify user message
select = str(input("press ENTER to Start Stop=>CTRL+C:"))
# Use a try/except within the while loop
while True:
try:
if select not in elements:
# ...
elif select in elements:
# ...
except KeyboardInterrupt:
break

这是的解决方案之一

import time
from pynput import keyboard
print("Press Enter ==> Startn"
"Press p   ==> Exit")
check = ''
def Start(key):
if key == keyboard.Key.enter:
print("Started")
return False
def Stop(key):
global check
if key==keyboard.KeyCode(char='p'):
check = 'stop'
return False
with keyboard.Listener(on_release=Start) as listener:
listener.join()
listener = keyboard.Listener(on_release=Stop)
listener.start()
while True:
print("Do Something:Test")
time.sleep(1)
if check == 'stop':
print("nLoop Stopped...!")
break

最新更新