如何测量Spyder(Python3.8)中psychopy.gui的Dlg对话框的应答反应时长?
实现方案
完全可以测量该对话框的应答反应时长,你可以借助Python自带的time模块或者Psychopy内置的计时工具实现,逻辑完全匹配你提出的计时规则:answer.show()是阻塞方法,代码运行到该语句时会立即弹出对话框,同时程序暂停等待用户操作,直到用户提交后才会继续执行后续代码,因此只需要分别在show()执行前后记录时间戳,两者差值就是目标反应时长。
方法1:使用Python标准库time实现
import psychopy.gui import time # 初始化对话框 answer = psychopy.gui.Dlg(title="Answer") answer.addField("请输入变位词答案:") # 弹窗弹出前立刻记录开始时间 start_time = time.time() # 弹出对话框,阻塞等待用户提交 answer.show() # 用户提交后立刻记录结束时间 end_time = time.time() # 计算反应时长,单位为秒,保留3位小数 reaction_time = round(end_time - start_time, 3) # 可选:判断用户是否点击确定提交,排除取消操作的无效数据 if answer.OK: user_input = answer.data[0] print(f"用户输入:{user_input},反应时长:{reaction_time}秒") else: print("用户取消输入,本次反应时长无效")
方法2:使用Psychopy内置计时器(精度更高,更适配心理学实验场景)
import psychopy.gui from psychopy import core # 初始化高精度计时器 rt_clock = core.Clock() answer = psychopy.gui.Dlg(title="Answer") answer.addField("请输入变位词答案:") rt_clock.reset() # 弹窗弹出前重置计时器为0 answer.show() reaction_time = round(rt_clock.getTime(), 3) # 直接获取从重置到提交的时长 if answer.OK: user_input = answer.data[0] print(f"用户输入:{user_input},反应时长:{reaction_time}秒")
内容的提问来源于stack exchange,提问作者Real Shinteki
相关产品推荐
相关产品推荐

