如何在PsychoPy嵌套试次循环内添加块内休息
PsychoPy嵌套循环下块内+块间休息实现方法
流程结构调整
先在Builder界面把实验流程调整为以下层级,不要放错组件位置:
- 最外层为
blocks循环,绑定AB.xlsx,共2次迭代,按顺序依次加载ListA、ListB对应的刺激块 blocks循环内部嵌套trial循环,每个块迭代下绑定对应的ListA.xlsx/ListB.xlsx,设置循环次数为20,对应每个块20个句子试次trial循环内部按顺序放两个Routine:- 句子呈现Routine:负责显示句子、收集被试反应
- 休息Routine:负责显示休息提示文字,配置空格键响应组件,设置为按空格结束Routine
- 所有循环外层放实验结束语Routine即可
休息触发代码替换
打开休息Routine的代码组件,切换到Begin Routine标签页,删掉原有代码,替换为以下内容:
show_break = False # 块内休息触发:每个块跑完第10个句子时触发(试次序号从0开始计数,第10个试次对应序号为9) if trials.thisN == 9: show_break = True # 块间休息触发:A块全部20个句子跑完、进入B块前触发(A块为外层循环第0个块,最后一个试次对应序号为19) if blocks.thisN == 0 and trials.thisN == 19: show_break = True # 不满足休息触发条件时直接跳过本Routine if not show_break: continueRoutine = False
注意事项
- 所有PsychoPy循环的
thisN属性均从0开始计数,不要按自然数逻辑写错序号。如果需要调整休息间隔,比如每5个句子休息一次,直接修改块内休息的判断条件为trials.thisN in [4,9,14]即可,对应第5、10、15个句子结束后触发休息 - 休息Routine内的键盘响应组件只保留
space为允许按键,勾选「Force end of Routine」选项,不要设置固定呈现时长,确保被试主动按空格才会回到实验流程 - 如果调试时发现休息触发时机错位,可以在句子呈现Routine的End Routine代码段加
print(f"块序号:{blocks.thisN}, 试次序号:{trials.thisN}"),运行时查看控制台输出的序号值,对应调整判断条件里的数字即可 - B块跑完20个句子后不会触发休息,会直接进入结束语流程,符合实验逻辑
内容的提问来源于stack exchange,提问作者Andreas
相关产品推荐
相关产品推荐

