Pyglet 新版本仅显示黑色

Pyglet New Version Display Only Black

到目前为止,我一直将 Pyglet 与 subclassing window 一起使用。在实践中是这样的:

import pyglet
from pyglet import *
from pyglet.gl import *

class test(pyglet.window.Window):

    old_set = 1024, 576
    new_set = old_set

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.video_set()

        self.label = pyglet.text.Label("TEST", font_name='Times New Roman', font_size=36, x=0, y=0, anchor_x='center', anchor_y='center')

    def video_set(self):
        self.platform = pyglet.window.get_platform()
        self.default_display = self.platform.get_default_display()
        self.default_screen = self.default_display.get_default_screen()

        self.set_size(self.new_set[0], self.new_set[1])
        self.location = self.default_screen.width // 2 - self.new_set[0] // 2, self.default_screen.height // 2 - self.new_set[1] // 2
        self.set_location(self.location[0], self.location[1])

        self.set_caption("Test")

        self.set_fullscreen(False)

    def update(self, dt):
        pass

    def draw(self):
        self.clear()
        self.label.draw()

if __name__ == "__main__":
    t = test()
    pyglet.clock.schedule_interval(t.update, 1 / 120)
    pyglet.app.run()

现在我几天前更新了 Pyglet,现在这个脚本不再有效了。通过搜索,我发现 pyglet.window.get_platform() 已被弃用,应该使用 pyglet.canvas.Display()pyglet.canvas.get_display() 代替。所以我进行了测试,既如所说,又如我在其他答案中发现的那样,但无论如何我都会黑屏,没有任何显示。无论是标签、精灵还是其他什么。那么,我在这个新版本中做错了什么?感谢您的帮助。

所以,我怀疑这段代码以前是否有效 - 但我会给你怀疑的好处。
因为在这种情况下,我认为这是因为您在 draw() 之前忘记了 on_。试试下面的代码,看看它是否有效,如果是这样,我就明白了:)

import pyglet
from pyglet import *
from pyglet.gl import *

class test(pyglet.window.Window):

    old_set = 1024, 576
    new_set = old_set

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.video_set()

        self.label = pyglet.text.Label("TEST", font_name='Times New Roman', font_size=36, x=0, y=0, anchor_x='center', anchor_y='center')

    def video_set(self):
        self.default_display = pyglet.canvas.Display()
        self.default_screen = self.default_display.get_default_screen()

        self.set_size(self.new_set[0], self.new_set[1])
        self.location = self.default_screen.width // 2 - self.new_set[0] // 2, self.default_screen.height // 2 - self.new_set[1] // 2
        self.set_location(self.location[0], self.location[1])

        self.set_caption("Test")

        self.set_fullscreen(False)

    def update(self, dt):
        pass

    def on_draw(self):
        self.clear()
        self.label.draw()

if __name__ == "__main__":
    t = test()
    pyglet.clock.schedule_interval(t.update, 1 / 120)
    pyglet.app.run()