似乎是一个愚蠢的问题,但我无法在Docs中找到如何在PsychoPy Builder实验中从用户获取文本输入。获取来自参与者的自由文本(字符串)输入
例如,如果我有一个文本组件来显示消息“你叫什么名字?”
我想获得文本答案(键回显到屏幕)并将其保存到结果文件中。
我必须放入代码并使用对话框吗?
谢谢
似乎是一个愚蠢的问题,但我无法在Docs中找到如何在PsychoPy Builder实验中从用户获取文本输入。获取来自参与者的自由文本(字符串)输入
例如,如果我有一个文本组件来显示消息“你叫什么名字?”
我想获得文本答案(键回显到屏幕)并将其保存到结果文件中。
我必须放入代码并使用对话框吗?
谢谢
有两种选择:(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。
谢谢迈克尔。看起来它会做的伎俩,但我希望更简单的交给一个非编程研究人员,所以我有一个戏剧,并提出以下满足我的要求。
我坚持的代码到GitHub上这里https://github.com/jacanterbury/PsychoPy-snippets
但基本上它具有下列功能:
TextStim文本字段包含此:
$(word + '\n' + inputText)
在同一回路A码对象有此:
开始实验:
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 & 32,这是单个空白的值(例如1)。在ASCII“A” =“A” +“”)
随意评论/改善它(它不处理档位锁定在目前但应该是很容易解决)
会很高兴将它放入库中,以便“每帧”选项卡上的所有代码都可以换成一行
Upvote for use(and show showing me)'continueRoutine = False' – Novak 2014-12-05 02:38:37