PsychoPy:记录用户输入字符串
PsychoPy: Logging User Input Strings
我有一个 PsychoPy 例程,旨在充当内存对象跨度测试。在一个循环中,软件会多次呈现一个对象(单个文本字符),然后是用户任务。该软件会记住这串字符,然后要求用户输入出现的字符。这个序列(任务循环,然后是角色回忆)本身在一个更大的循环中多次出现。
角色随机选择。
我想在 PsychoPy 生成的 CSV 文件或某种日志文件中记录用户输入的字符。如何在 PsychoPy 图形界面系统中做到这一点?
用于记录字符序列的代码块是:
开始例程
givenAnswer = ""
returnPressed = False
R_memPrompt.setText("Please enter characters in the order they were presented, then hit 'Return':")
R_memPrompt.draw()
win.flip()
每帧
loopTest = True
userInput = ""
if returnPressed == False:
while loopTest == True:
response = event.waitKeys(keyList=['a','b','c','d','e','f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'return', 'backspace', 'left'])
if response[0] == 'return':
loopTest = False
returnPressed = True
continueRoutine = False
elif response[0] == 'backspace':
userInput = userInput[:-1]
userInput = userInput.upper()
R_disp.setText(userInput)
R_disp.draw()
win.flip()
else:
userInput = userInput + response[0]
userInput = userInput.upper()
R_disp.setText(userInput)
R_disp.draw()
win.flip()
结束例程
givenAnswer = givenAnswer + userInput
后面的例程有,因为它的开始例程
if memorySequence == givenAnswer: # memorySequence is the prior record of memory characters
# do some stuff
else:
# do some other stuff
粗糙(它是原型)但是 Each Frame 部分的目的只是通过 R_disp 反映写入屏幕的字符文本刺激,同时允许用户退格而不用担心区分大小写。最终答案在 givenAnswer 中结束,
然后与之前建立的 memorySequence 进行比较。
我想将那些变量 memorySequence 和 givenAnswer 的内容转储到 CSV 文件或一些日志文件中,以便我不要丢失信息。
有办法吗?
当然可以。在代码组件的 "End Routine" 选项卡中,输入如下内容:
thisExp.addData("sequence", memorySequence)
thisExp.addData("answer", givenAnswer)
这将向您的数据文件添加两个新列,第 headers 列包含您在引号中放入的任何文字值。
我有一个 PsychoPy 例程,旨在充当内存对象跨度测试。在一个循环中,软件会多次呈现一个对象(单个文本字符),然后是用户任务。该软件会记住这串字符,然后要求用户输入出现的字符。这个序列(任务循环,然后是角色回忆)本身在一个更大的循环中多次出现。
角色随机选择。
我想在 PsychoPy 生成的 CSV 文件或某种日志文件中记录用户输入的字符。如何在 PsychoPy 图形界面系统中做到这一点?
用于记录字符序列的代码块是:
开始例程
givenAnswer = ""
returnPressed = False
R_memPrompt.setText("Please enter characters in the order they were presented, then hit 'Return':")
R_memPrompt.draw()
win.flip()
每帧
loopTest = True userInput = ""
if returnPressed == False:
while loopTest == True:
response = event.waitKeys(keyList=['a','b','c','d','e','f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'return', 'backspace', 'left'])
if response[0] == 'return':
loopTest = False
returnPressed = True
continueRoutine = False
elif response[0] == 'backspace':
userInput = userInput[:-1]
userInput = userInput.upper()
R_disp.setText(userInput)
R_disp.draw()
win.flip()
else:
userInput = userInput + response[0]
userInput = userInput.upper()
R_disp.setText(userInput)
R_disp.draw()
win.flip()
结束例程
givenAnswer = givenAnswer + userInput
后面的例程有,因为它的开始例程
if memorySequence == givenAnswer: # memorySequence is the prior record of memory characters
# do some stuff
else:
# do some other stuff
粗糙(它是原型)但是 Each Frame 部分的目的只是通过 R_disp 反映写入屏幕的字符文本刺激,同时允许用户退格而不用担心区分大小写。最终答案在 givenAnswer 中结束, 然后与之前建立的 memorySequence 进行比较。
我想将那些变量 memorySequence 和 givenAnswer 的内容转储到 CSV 文件或一些日志文件中,以便我不要丢失信息。
有办法吗?
当然可以。在代码组件的 "End Routine" 选项卡中,输入如下内容:
thisExp.addData("sequence", memorySequence)
thisExp.addData("answer", givenAnswer)
这将向您的数据文件添加两个新列,第 headers 列包含您在引号中放入的任何文字值。