1

我正在尝试使用 pyglet 而不是 pygame,因为它支持多个屏幕。这是我运行的示例代码:

import pyglet

display = pyglet.canvas.get_display()
screens = display.get_screens()
window = pyglet.window.Window(fullscreen=True, screen=screens[1])

pyglet.app.run()

我得到这个错误:

回溯(最后一次调用):文件“/home/pi/netcomShopTV/idk.py”,第 5 行,window = pyglet.window.Window() 文件“/usr/local/lib/python2.7/dist- packages/pyglet/ init .py”,第 359 行,在getattr 导入(import_name)文件“/usr/local/lib/python2.7/dist-packages/pyglet/window/init .py ”,第 1890 行,在 gl。 _create_shadow_window() 文件“/usr/local/lib/python2.7/dist-packages/pyglet/gl/init .py”,第 209 行,在_create_shadow_window _shadow_window = Window(width=1, height=1, visible=False)文件“/usr/local/lib/python2.7/dist-packages/pyglet/window/xlib/init .py”,第 171 行,在init super(XlibWindow, self) 中在里面(*args, **kwargs) 文件“/usr/local/lib/python2.7/dist-packages/pyglet/window/init .py”,第 642 行,在init self._create () 文件“/usr/local /lib/python2.7/dist-packages/pyglet/window/xlib/init .py”,第 265 行,在_create self.context.set_vsync(self._vsync) # XXX 中?文件“/usr/local/lib/python2.7/dist-packages/pyglet/gl/xlib.py”,第 265 行,在 set_vsync warnings.warn(e) TypeError: expected string or buffer

Pyglet 版本:1.4.8

我在互联网上搜索,找不到任何解决这个问题的方法。

4

2 回答 2

2

似乎这个错误是在最近的更改中引入的。您绝对应该在pygletgithub 问题跟踪器上提出它。

同时,尝试安装 1.4.8 之前的版本。(虽然我怀疑这可能只是导致同步失败而崩溃,而不是试图警告你然后崩溃:))。

于 2019-12-09T11:33:48.373 回答
0

As @alecxe mentioned, it was a bug. After I opened a ticket on github, I got the solution:

This is an exception for a Raspberry Pi specific issue. It's supposed to raise a warning, and pass without crashing. If possible, could you try editing line 265 in /usr/local/lib/python2.7/dist-packages/pyglet/gl/xlib.py, and changing:

warnings.warn(e) to warnings.warn(e.message)

于 2019-12-09T14:36:28.120 回答