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

使用Python与PsychoPy类绘制窗口文本无显示问题求助

解决你的PsychoPy文本不显示问题

嘿,我一眼就发现问题所在啦!你看不到文本的核心原因是单位不匹配:

你创建窗口时用了units='deg'(度数单位),但定义TextStim的pos参数时,却用了像素值winsize[0]/4和winsize[1]/4。这就像用米来量厘米的距离,文本直接被放到了屏幕可视范围之外,自然看不到啦。

下面给你两种修复方案,以及调整后的完整代码:

方案1:统一使用度数单位设置位置

直接把pos改成符合度数单位的坐标,比如把文本放在屏幕中央附近,更适合展示指导语:

from psychopy import visual, core, event
winsize=[1536, 864]
mywin = visual.Window(winsize, monitor='testMonitor', units='deg',allowGUI=False, winType='pyglet',fullscr=True, color = 'dimgrey',colorSpace ='rgb')

class TextStimHandler():
    def __init__(self, win, txt='Unicorn'):
        self.window = win
        # 用度数单位设置位置,[0,0]对应屏幕中心
        self.text = visual.TextStim(
            win, 
            text=txt, 
            font=['Gill Sans MT', 'Arial','Helvetica','Verdana'], 
            pos=[0, 0],
            units='deg', 
            alignHoriz='center',
            wrapWidth=20,  # 用度数定义换行宽度,适配屏幕
            alignVert='center', 
            height=1.0, 
            color='gainsboro'
        )
    
    def set_text(self, txt):
        self.text.setText(txt)
    
    def show_until_spacebar(self):
        while True:
            self.text.draw()
            self.window.flip()
            # 清空事件队列,避免按键累积导致多次触发
            keys = event.getKeys(['space'])
            if keys:
                event.clearEvents()
                break

welcome = TextStimHandler(mywin)
welcome.set_text("Hello!\n\nThank you for participating!")
welcome.show_until_spacebar()

# 程序结束时记得关闭窗口、退出核心进程
mywin.close()
core.quit()

方案2:切换为像素单位匹配你的位置逻辑

如果你想保留像素位置的设置习惯,可以把TextStim的units改成'pix',同时调整文本高度适配像素单位:

# 仅修改类中的TextStim初始化部分
self.text = visual.TextStim(
    win, 
    text=txt, 
    font=['Gill Sans MT', 'Arial','Helvetica','Verdana'], 
    pos=[win.size[0]/4, win.size[1]/4],  # 直接用窗口的像素尺寸
    units='pix',
    alignHoriz='left', 
    wrapWidth=win.size[0]/2, 
    alignVert='top', 
    height=20,  # 像素单位下设置合适的文本高度
    color='gainsboro'
)

额外小提示:

  • 类名建议用大驼峰命名法(比如TextStimHandler),更符合Python编码规范
  • 程序结束时一定要关闭窗口并退出core,避免残留进程影响后续运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:58:34