【发布时间】:2016-12-04 04:44:28
【问题描述】:
我在 Matlab (psychtoolbox) 中有一个脚本,我在其中编写了一个视觉模拟刻度,锚定在 0 和 100,参与者通过按住左右箭头键移动标记。在实验方案继续进行下一个刺激之前,参与者有 5 秒钟的时间将标记移动到所需位置。
为了在 PsychoPy 中编写类似的代码,我创建了以下测试代码:
from psychopy import visual, core
win = visual.Window([800,800])
# rating scale
scale = visual.RatingScale(win, low=0, high=100, size=2, tickMarks=['0','100'],
markerStart='50', marker='circle', textSize=.5, showValue=False,
showAccept=False, noMouse=True, maxTime = 5)
while scale.noResponse:
scale.draw()
win.flip()
win.close()
此代码实际上可以很好地开始使用,但我对键盘输入的工作方式有疑问。每次用户按下和释放键时,标记仅移动 1 点(0 到 100 之间)。期望的结果是让标记在按下左键或右键时连续移动。我的想法是,我可以通过编辑 PsychoPy 的底层代码来实现这一点,尽管我觉得这有点超出我的舒适区。任何对替代方法的帮助将不胜感激。这只是代码的开始,一切顺利!
谢谢, 帕特里克
【问题讨论】:
-
编辑:由于 RatingScale 使用 pyglet 来捕捉键盘事件,我不确定这个策略是否有效,但它就这样(只是一个非常快速且未经测试的建议让你开始):你可以使用iohub 模块捕获关键版本:stackoverflow.com/questions/32729026/key-releases-psychopy?rq=1 并在 Coder --> 演示 --> iohub --> 键盘中查看 iohub 演示。然后你可以在你的while循环中有一个
core.wait(0.2)在监听键盘释放之间,如果它每秒移动5个点。
标签: python keyboard-events psychopy