2015-01-05 85 views
1

我有一个PsychoPy例程,旨在作为内存对象跨度测试。在一个循环中,软件会多次显示一个对象(单个文本字符),然后显示用户任务。该软件会记住字符串,并在稍后要求用户输入显示的字符。这个序列(任务循环之后是字符回忆)本身在一个更大的循环中被呈现几次。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 =真 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 

粗品(它是原型),但的意图每个帧部是只是简单地通过R_disp文字刺激来反射写入屏幕的字符,同时允许用户退格,而不用担心区分大小写。最终答案结束于givenAnswer, ,稍后与之前建立的memorySequence比较。

我想抛售这些变量的内容,memorySequencegivenAnswer CSV文件或一些日志文件,这样就不会丢失信息。

有没有办法做到这一点?

回答

3

当然可以。在你的代码组件的“结束常规”选项卡中,把这样的事情:

thisExp.addData("sequence", memorySequence) 
thisExp.addData("answer", givenAnswer) 

这将增加两个新的列到您的数据文件,你把任何文字值在引号的列标题。

+1

是的,这正是我所希望的。你已经解决了六个与我描述的问题类似的问题。 – Novak