获取参与者的自由文本(字符串)输入

时间:2014-10-09 09:05:39

标签: psychopy

似乎是一个愚蠢的问题,但我无法在Docs中找到如何在PsychoPy Builder实验中从用户那里获取文本输入。

例如,如果我有一个Text组件来显示消息"你的名字是什么?"

我希望得到文本答案(键回显示在屏幕上)并将其保存到结果文件中。

我是否必须放入代码并使用对话框?

由于

2 个答案:

答案 0 :(得分:4)

谢谢迈克尔。看起来它可以做到这一点,但我希望更简单的东西交给一个非编程研究员,所以我有一个游戏,并提出了满足我的要求的以下内容。

我已将代码插入GitHub https://github.com/jacanterbury/PsychoPy-snippets

但基本上它会执行以下操作:

TextStim文本字段包含:

$(word + '\n' + inputText)

同一循环中的代码对象具有:

开始实验:

inputText = ""

开始常规:

theseKeys="" 
shift_flag = False
text_3.alignHoriz ='left'

每一帧:

n= len(theseKeys)
i = 0
while i < n:

    if theseKeys[i] == 'return':
        # pressing RETURN means time to stop
        continueRoutine = False
        break

    elif theseKeys[i] == 'backspace':
        inputText = inputText[:-1]  # lose the final character
        i = i + 1

    elif theseKeys[i] == 'space':
        inputText += ' '
        i = i + 1

    elif theseKeys[i] in ['lshift', 'rshift']:
        shift_flag = True
        i = i + 1

    else:
        if len(theseKeys[i]) == 1:
            # we only have 1 char so should be a normal key, 
            # otherwise it might be 'ctrl' or similar so ignore it
            if shift_flag:
                inputText += chr( ord(theseKeys[i]) - ord(' '))
                shift_flag = False
            else:
                inputText += theseKeys[i]

        i = i + 1

结束例程:

# let's store the final text string into the results finle...
thisExp.addData('inputText', inputText)
inputText=""

数据文件夹中的结果文件提供按下的各个键以及最终字符串

希望代码是相当不言自明的。唯一可能不明显的是低位和低位。 ascii中的大写字符是1:1&amp; 32分开,这是一个空格的值(例如在ASCII'a'='A'+'')

随意评论/改进它(它目前不处理SHIFT-LOCK但应该很容易修复)

很高兴将它放入库中,以便“每个帧”选项卡上的所有代码都可以换成一行

答案 1 :(得分:2)

有两种选择:(1)使用你提到的对话框。您需要让主窗口不是全屏,或者暂时将其最小化,以便可以在前面看到对话框。

(2)自己处理按键并将其镜像到文本组件中的屏幕上。是的,如果内置它会很好,但目前还没有。阅读这篇广泛的主题,了解如何将这种方法融入Builder:https://groups.google.com/forum/#!topic/psychopy-users/lE_bTMHUAoU

另请参阅此主题:https://groups.google.com/forum/#!topic/psychopy-users/DGXkU-31MPg,其中包含指向Alex Holcombe的某些代码的指针。