2
我新的编程,我有蟒蛇的了解甚少。我试图制作一个程序来测试生物学实验的听觉和视觉反应时间。 对于听觉部分,我在声音开始播放时启动计时器,受试者只要听到它就必须按下一个键。我的问题是,当声音仍在播放时,我无法执行其他任何操作,因此无法记录按下按键的时间。 这里是什么,我试图做一个简化版本:执行的按键事件,而玩在Python(Tkinter的)声音
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()
不管我的ELIF event.keysym ==“返回”划归:的声音结束后,才能执行。 有没有办法(希望不是很复杂)来克服这一点?
我能想出的唯一办法是,直到键被按下时采取了很短的声音(毫秒?),并循环播放。
谢谢。
谢谢你的快速回答,它的工作原理。你能评论它有多准确吗?我读过time.time和time.clock,time.clock似乎更适合我的情况(对于windows)。但我不确定我的结果有多可靠。我为视觉测试做了同样的事情,只改变了背景。收到播放声音的指令和播放实际声音之间是否有延迟?和改变背景时的延迟有很大的不同吗?谢谢 – user1830663
@ user1830663:当然有延迟。 – martineau
我试图用timeit来验证它。是否仅包含winsound.PlaySound ...语句足够了?我跑了好几次,但我发现声音的持续时间本身就包含在我的时间之内。我是否应该知道这个声音有多长时间并且减去它?那垃圾收集呢?我不确定我是否应该启用它。 – user1830663