PsychoPy Coder实现心理学小实验

纯python代码实现的,代码并不复杂,主要就是熟悉一个psychopy这个库的函数使用,前面都是psychopy的库函数使用,后面就是将收集到的数据保存为excel表格。

在屏幕中左右各显示一张图像,并显示提示词:要求用户选择一张图像,并根据选择点击键盘按键N或M(此处可以设置为其它键盘按键)。等待用户点击键盘,输出根据键盘判定点击的图像是哪一张,并输出从显示图像到用户点击键盘的时间。请注意图像的选择,避免在显示中图像的压缩变形。

效果如下

使用visual.Window创建一个可视化窗口,用visual.ImageStim显示两张图片,一张放置在窗口左边,另一张放置在窗口右边,用visual.TextStim在窗口中间显示提示文字,如下图所示,为了避免图像显示的压缩变形,在显示的时候规定好显示的size。

然后在显示图片之后开始记录时间,同时监听键盘输入,当键盘输入N或者M时结束记录时间并关闭窗口,输出用户选择的图像和从显示图像到用户敲击键盘的时间,如下图所示。

并将数据保存为excel表格,每次测试都将新的数据追加上去,测试30次,根据用户选择的图像绘制的柱状图如下图所示,可见二者大致相同。

根据记录的时间绘制排列图如下图所示,其中横坐标为时间区间,纵坐标为落在区间中的数目,可知大多数的反应时间是在4秒到7秒之间。

代码如下

复制代码
from psychopy import visual, event, core
import pandas as pd

# 初始化窗口和图像
win = visual.Window(size=(1000, 618), monitor='testMonitor', units='pix')
left_image = visual.ImageStim(win, image="C++.jfif", pos=(-300, 0), size=(400, 400))
right_image = visual.ImageStim(win, image="Java.jfif", pos=(300, 0), size=(400, 400))
prompt_text = visual.TextStim(win, text="请选择一张图像\n按N键选择左图像\n按M键选择右图像", pos=(0, 0))

# 绘制图像和提示词
left_image.draw()
right_image.draw()
prompt_text.draw()
win.flip()

# 等待用户按键
response = None
rt_clock = core.Clock()
while True:
    keys = event.getKeys()
    if 'n' in keys:
        response = "左图像"
        break
    elif 'm' in keys:
        response = "右图像"
        break

# 输出结果
rt = rt_clock.getTime()
print("用户选择了:", response)
print("反应时间:", rt)

# 保存数据到表格
data = {'选择': [response], '反应时间': [rt]}
df = pd.DataFrame(data)

try:
    existing_df = pd.read_excel('data.xlsx')  # 读取已存在的表格数据
    newDF = pd.concat([df, existing_df], ignore_index=True)
    newDF.to_excel('data.xlsx', index=False)
except FileNotFoundError:
    df.to_excel('data.xlsx', index=False)

# 关闭窗口
win.close()
相关推荐
2601_957780849 分钟前
Claude 4.6 对阵 GPT-5.4:2026 开发者大模型 API 选型深度解析
人工智能·python·gpt·ai·claude
2601_9577808410 分钟前
GPT-5.5 深度解析:2026年4月OpenAI旗舰模型的技术跨越与商业决策指南
大数据·人工智能·python·gpt·openai
zhaoyong22238 分钟前
SQL如何统计每个用户的首次行为时间_MIN聚合与分组
jvm·数据库·python
2501_901006471 小时前
C#怎么实现配置热更新 C#如何在运行时动态刷新配置文件不需要重启程序【技巧】
jvm·数据库·python
m0_470857641 小时前
HTML怎么创建响应式图片备选方案_HTML srcset与sizes结构【详解】
jvm·数据库·python
2301_795099742 小时前
如何优化SQL中大批量数据的物理删除_分批次与间隔控制
jvm·数据库·python
阿kun要赚马内2 小时前
后端数据操作组合:Pydantic与ORM
后端·python·orm·sqlalchemy
2301_812539672 小时前
CSS如何引入CSS形状生成器_通过自定义属性实现图形化样式
jvm·数据库·python
m0_609160493 小时前
Golang怎么实现数据库连接重试_Golang如何在启动时重试连接直到数据库就绪【技巧】
jvm·数据库·python
花米徐3 小时前
技术洞察精选 | 2026年4月28日 — 5月4日
后端·python·flask