<p>好的,很好-谢谢!现在我继续尝试开发你的脚本。我增加了一份试用名单,现在我不太确定该怎么办。我的脚本如下所示:</p>
<pre><code># Grounding of Words Experiment #
# -*- coding: utf-8 -*-
#Import libraries
import re
import glob
from psychopy import sound, visual, event, data, core, gui # imports a module for visual presentation and one for controlling events like key presses
import ppc
# ID, age, gender box display
myDlg = gui.Dlg(title="Experiment") #, pos=(400,400)
myDlg.addField('ID:')
myDlg.addField('Age:')
myDlg.addField('Gender:', choices = ['Female', 'Male'])
myDlg.show()#you have to call show() for a Dlg
if myDlg.OK:
ID = myDlg.data[0]
Age = myDlg.data[1]
Gender = myDlg.data[2]
else:
core.quit()
# define window
win = visual.Window(fullscr=True)
# function to draw instructions (probably overkill unless run more than once)
def instruct(txt):
instructions = visual.TextStim(win, text=txt, height = 0.05) # create an instruction text
instructions.draw() # draw the text stimulus in a "hidden screen" so that it is ready to be presented
win.flip() # flip the screen to reveal the stimulus
event.waitKeys() # wait for any key press
# as you have above
# function to run each trial
def trial(number = -999, sound_name = 'A'):
sound = Sound.sound()
if sound_name in ["dog-howling.wav"]:
condition = "press"
else:
condition = "no_press"
event.clearEvents()
sound.play(sound_name)
for frame in range(90):
time_start = win.flip()
keys = event.getKeys(keyList=['space', 'escape'], timeStamped = True)
if keys: # if a non-empty list returned:
key, time_key = keys[0]
rt = time_key - time_start
sound.stop() # ready to start next trial immediately
if key == 'escape':
core.quit()
if condition == "press":
return {'accuracy':1, 'rt':rt}
else:
return {'accuracy':0, 'rt':rt}
else: # the loop ended without a key press
if condition == "press":
return {'accuracy':0, 'rt':'NA'}
else:
return {'accuracy':1, 'rt':'NA'}
####
# define triallist
trial_list = []
conditions = ["klik", "notklik"]
sounds = ["dog-howling.wav", "sound2.wav", "sound3.wav"]
for condition in conditions:
for sound in sounds:
# Add a dictionary for every trial
trial_list += [{
'ID': ID,
'age': AGE,
'gender': GENDER,
'condition': condition,
'sounds': sound,
'rating': '',
'rt': ''
}]
# Randomize order
trial_list = sample(trial_list, len(trial_list))
# Add trial numbers
for i, trial in enumerate(trial_list):
trial['no'] = i + 1 # start at 1
# write file
####
# run the experiment:
####
####
# show the instructions:
####
instruct('''Welcome to the experiment!
You will be hearing different words.
Whenever you hear the word "Klik" and "Kast" please press the left mouse button.
Whenever you hear any other word - do nothing.
Try to be as fast and accurate as possible.
Please put on the headphones.
The experiment will take 5 minutes.
Press any key to start the experiment''')
####
# run the trials:
####
for trial_num in range(10):
# run each trial and get the results.
# I'm not sure where you're getting your sound values
# but they could be indexed from a list using the trial number:
result = trial(number=trial_num, sound_name=sound_names[trial_num])
# then save the values from the returned dictionary to a file+
#Creates the outfile, that will be the file containing our data, the name of the file, as saved on the computer is the filename
#out_file="Grounding_experiment_results.csv"
#Creates the header for the data
#header="trial,ID,Gender,Age,Word,rt,SpaceKlik\n"
#opens the outfile in writemode
#with open(out_file,"w") as f:
# f.write(header)#writes the header in the outfile
</code></pre>