持续按下键时精神变态移动等级刻度标记

2024-10-02 14:18:05 发布

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

我在Matlab(psyctoolbox)中有一个脚本,我编写了一个可视化模拟比例尺,锚定在0和100,参与者通过按住左右箭头键在上面移动标记。在实验方案进入下一个刺激之前,参与者有5秒钟的时间将标记移动到所需的位置。在

在编写类似于神经病的代码时,我创建了以下测试代码:

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之间)。所需的结果是在按下向左或向右键时使标记连续移动。我的想法是,我可以通过编辑psycopy的底层代码来实现这一点,尽管我觉得这有点超出了我的舒适范围。如有其他方法的帮助,我们将不胜感激。这只是代码的一个开始,所以什么都可以!在

谢谢你, 帕特里克


Tags: 代码标记脚本false可视化方案参与者win
1条回答
网友
1楼 · 发布于 2024-10-02 14:18:05

我认为这个查询解决了您的问题:PsychoPy Key Down Code using ioHub

rating.markerPlacedAt是更新每个帧所需的内容。以下是我对每个框架部分的改编(相当原始)的精简版:

for event_io in keyboard.getEvents():
    if event_io.type == EventConstants.KEYBOARD_PRESS:
        if event_io.key == u'right':
            increment = 0.01 # move one step to the right
        elif event_io.key == u'left':
            increment = -0.01 # move one step to the left
    if event_io.type == EventConstants.KEYBOARD_RELEASE:
        increment = 0 # stop changing position

if 0 < rating.markerPlacedAt < 1:
    rating.markerPlacedAt += increment

相关问题 更多 >