从本质上说,PsychoPy 是一个「变量驱动」的实验程序:刺激呈现什么、呈现多少次、以什么顺序出现,都可以由 Excel 文件控制。理解了 Excel 条件文件和 Loop 循环的工作原理,你就已经掌握了 PsychoPy 最核心的一套实验组织逻辑。
一、为什么需要 Excel?
想象一个最简单的实验:屏幕上依次显示 10 个词,被试看到词后按键。
如果没有 Excel,你需要为每个词创建一个单独的 Routine——10 个词就是 10 个 Routine。如果词有 100 个呢?
有了 Excel ,你只需要:
一个 Routine + 一个 Loop + 一个 Excel 文件。
把所有刺激材料写在 Excel 里,Loop 会自动逐行读取数据并重复执行同一个 Routine。无论有 10 个词还是 1000 个词,实验框架几乎都不用修改。

二、Excel 文件怎么写?
规则很简单:
第一行是列名(变量名) 每一行是一个试次 每一列是一个变量
举个例子,一个简单的stroop实验:
word color corrAns红 red r绿 green g蓝 blue b
列名用英文(不要用中文!),数据可以是中文。
三、Loop 怎么设置?
可以把 Loop 理解成一个「自动翻页器」:每运行一次,就从 Excel 中读取一行数据,然后执行一次 Routine。
在 Builder 的 Flow 里,点「Insert Loop」。弹出的设置窗口里:

1 表示每行执行一次;填 2 表示整张条件表再重复一遍。(按 Excel 的行顺序执行)、random(随机打乱行顺序);慎选fullRandom,完全随机抽取,允许同一条件重复出现。
四、怎么在组件里用 Excel 的变量?
在组件的设置里,用 $ 符号引用 Excel 的列名。
比如 Text 组件的 Text 字段填 $word,Color 字段填 $color。PsychoPy 会自动从 Excel 里读取对应的值。

五、常见错误
1.有空行:Loop 会把空行也当成一个试次,导致显示空白。
2.忘记加 $:在组件里引用变量必须加 $ 符号。写 $word 才会读取 Excel 中的变量,写 word 显示的是字母 word。
3.Set every repeat 没改:使用 Excel 变量时,组件对应属性通常要设为 Set every repeat,否则只会读取第一行数据。
4.列名不规范:建议只用英文、数字和下划线,例如 word、corrAns、stim_color。不要用空格、括号或中文列名,否则容易出现变量读取问题
— 未完待续 ,欢迎关注 —
夜雨聆风