pyglet无法在第二个显示器上绘制窗口

2 投票
1 回答
1364 浏览
提问于 2025-04-17 14:58

我正在用 pyglet 写一个心理物理实验。我的电脑连接了两个显示器,它们被设置成两个独立的屏幕,分别是 0 和 1,0 是我的工作站显示器,1 是实验用的显示器。我想让 pyglet 在实验屏幕(Xscreen 1)上显示内容。

为了测试这个设置,我写了一个简单的程序,显示一些文本标签。当我用 pyglet.window.Window(screen=workstation_screen) 运行程序时,窗口出现在屏幕 0 上,文本也正常显示。

但是,当我用 pyglet.window.Window(screen=experiment_screen) 运行程序时,窗口出现在屏幕 1 上,但文本却没有显示出来。

我对这种情况感到很困惑,我是不是做错了什么?这是 pyglet 的已知 bug 吗?还是说这是 X 的问题?任何建议都非常感谢。

详细信息:

在 Ubuntu 10.04.4 上使用 Python 2.7.3 和 pyglet 1.1.4。

代码:

import pyglet

display = pyglet.window.get_platform().get_default_display()
screens = display.get_screens()

# When I replace 'screens[0]' with 'screens[1]' the aforementioned problem occurs.
window = pyglet.window.Window(screen=screens[0])

label = pyglet.text.Label('draw test',x=window.width/2.0,y=window.width/2.0)

@window.event
def on_draw():
    window.clear()
    label.draw()

pyglet.app.run()

1 个回答

0

我找到了一种解决办法,就是在 Xorg.conf 文件里开启 Xinerama,然后调用 window.set_fullscreen(fullscreen=True,screen=experiment_screen) 这个命令,这样就可以把窗口移动到第二个屏幕并全屏显示。

不过,我还是不太明白,为什么在没有开启 Xinerama 的情况下,窗口会出现但文本却不显示。

撰写回答