You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PsychoPy中将屏幕坐标原点(0,0)设置为左上角或左下角?

如何在PsychoPy中修改屏幕坐标原点位置

嘿,这个问题我刚好帮很多人解决过!PsychoPy默认把原点放在屏幕中心确实有时候不太符合我们的设计习惯,改成左上角或者左下角完全没问题,给你两种实用的方案:

方法1:直接通过窗口单位切换(最省心)

创建窗口时指定units参数,就能直接切换坐标系统,这是最推荐的方式:

切换到左上角原点

如果想要原点在屏幕左上角,直接把units设为'pix'就搞定了——此时x轴向右递增,y轴向下递增,完全符合很多GUI设计的习惯:

from psychopy import visual

# 创建左上角为原点的窗口,尺寸设为800x600像素
win = visual.Window(size=(800, 600), units='pix', fullscr=False)

# 测试:在左上角画个红色圆点(pos=(0,0)就是原点位置)
red_dot = visual.Circle(win, pos=(0, 0), radius=10, fillColor='red')
red_dot.draw()
win.flip()

切换到左下角原点

PsychoPy没有直接预设左下角为原点的单位,但我们可以通过两种简单方式实现:

方式A:基于像素单位反转y轴

既然'pix'是左上角原点,y轴向下为正,那我们用窗口高度减去目标y值,就能得到左下角为原点的坐标:

from psychopy import visual

win = visual.Window(size=(800, 600), units='pix', fullscr=False)
win_height = win.size[1]  # 获取窗口的高度(像素值)

# 比如要在左下角(100, 100)的位置画蓝色圆点
converted_y = win_height - 100
blue_dot = visual.Circle(win, pos=(100, converted_y), radius=10, fillColor='blue')
blue_dot.draw()
win.flip()

方式B:用归一化单位调整坐标范围

如果习惯用相对坐标,可以用'norm'单位(默认范围是-1到1,中心为原点),把坐标整体偏移1个单位,就能让左下角变成(0,0),右上角变成(2,2):

from psychopy import visual

win = visual.Window(size=(800, 600), units='norm', fullscr=False)

# 此时(0,0)就是左下角,(2,2)是右上角
green_dot = visual.Circle(win, pos=(0, 0), radius=0.1, fillColor='green')
green_dot.draw()
win.flip()

方法2:自定义坐标转换函数(适合已有代码的场景)

如果你的实验已经写了大量基于中心原点的代码,不想全局修改窗口单位,可以写个简单的转换函数,把目标坐标转换成PsychoPy默认的中心坐标:

def top_left_to_center(pos, win_size):
    # pos:左上角原点的(x,y)坐标
    # win_size:窗口的(width, height),比如(800,600)
    x, y = pos
    center_x = x - win_size[0]/2
    center_y = win_size[1]/2 - y
    return (center_x, center_y)

# 使用示例:把左上角(0,0)转换成中心坐标
win = visual.Window(size=(800, 600), fullscr=False)
target_pos = top_left_to_center((0, 0), win.size)
dot = visual.Circle(win, pos=target_pos, radius=10, fillColor='purple')
dot.draw()
win.flip()

要是需要转换左下角坐标,只需要调整函数里的y轴计算逻辑就行,原理是一样的~

内容的提问来源于stack exchange,提问作者Cranjis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:01:28