首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PsychoPy -按下键连续移动RatingScale标记

PsychoPy -按下键连续移动RatingScale标记
EN

Stack Overflow用户
提问于 2016-03-22 20:48:25
回答 1查看 983关注 0票数 0

我在Matlab (心理工具箱)中有一个脚本,其中我编写了一个视觉模拟标度,锚定在0和100,参与者通过按住左右箭头键移动一个标记。在实验协议进入下一个刺激之前,参与者有5秒的时间将标记移动到期望的位置。

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

代码语言:javascript
复制
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的底层代码来实现这一点,尽管我觉得这有点超出了我的舒适范围。对替代方法的任何帮助都将不胜感激。这只是代码的一个开始,所以任何事情都会发生!

谢谢你,帕特里克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-05 21:21:28

我认为这个查询解决了您的问题:使用PsychoPy的ioHub下键代码

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

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36164903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档