在python中播放声音时执行keypress事件(tkinter)

2024-10-04 01:25:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我是编程新手,对python几乎一无所知。我正在尝试制作一个程序,测试听觉和视觉反应时间,用于生物实验。 对于听觉部分,当声音开始播放时,我会启动计时器,然后被拍摄者一听到就按一个键。我的问题是,当声音还在播放时,我无法执行任何其他操作,因此无法记录按键的时间。 我要做的是简化版:

from Tkinter import *
import time
import winsound

def chooseTest(event):
    global start
    if event.keysym == 'BackSpace':
       root.after(2000,playSound)
    elif event.keysym == 'Return':
       new_time = time.clock()
       elapsed = new_time - start
       print elapsed
    else:
       pass

def playSound():
    global start
    start = time.clock()
    winsound.PlaySound('SystemAsterisk', winsound.SND_ALIAS)

root=Tk()
root.overrideredirect(True)
root.geometry("{0}x{1}+0+0".format(root.winfo_screenwidth(),root.winfo_screenheight()))           
root.bind('<Key>',chooseTest)
root.mainloop()

不管我把它放在事件.keysym=='Return':只在声音结束后执行。 有什么方法(希望不是很复杂)来克服这个问题吗?
我能想出的唯一解决办法就是用很短的声音(毫秒?)一直循环直到按键。在

谢谢。在


Tags: importevent声音newreturntimedefroot