Ich versuche, einen Hörtest zu schreiben, der Töne mit immer lauteren Lautstärken wiedergibt, bis er die Liste der Lautstärken durchlaufen hat oder vom Benutzer eingegeben wurde und anzeigt, dass er den Ton gehört hat. Um dies zu tun, versuche ich das Skript zu erhalten, um während der Eingabe immer noch eine Schleife einzugeben, um die Volumes zu erhöhen, aber normalerweise wird input() das Skript stoppen. Und die Fäden scheinen nach dem ersten Looping nicht mehr zu funktionieren. Dies ist, was ich mit so weit kam:Python wartet auf Eingabe beim Ausführen des Skripts
def tone_stopper():
"""This function will take as input a pressed key on the keyboard and give
True as output"""
test = input("Press enter when you hear a tone: ")
if test == " ":
return True
def call_play_file(frequency, vol_list):
"""This function will play a frequency and stop when the user presses
a button or stop when it reaches the loudest volume for a frequency,
it takes as an input a frequency and a list of volumes
and returns the loudness at which the sound was playing when a button was
pressed"""
for volume in vol_list: #plays a tone and then repeats it a different vol
tone_generator(frequency, volume)
play_file('hearingtest.wav')
if thread == True:
return frequency, volume
return frequency, "didn't hear" #in case no button is pressed
thread = threading.Thread(target = tone_stopper())
thread.setDaemon(True)
thread.start()
vol_list = [4, 8, 12];
freq_left_right = random_freq_list(200, 18000, 500)
startplaying = call_play_file(freq_left_right, vol_list)
das Skript zu verhindern, extrem lang ist es zu zwei Funktionen bezieht, die ich hier nicht definiert haben.
Nun, es ist in einem separaten Thread. Ist das nicht die Idee des Threading? – TigerhawkT3