Pyglet新版本仅显示黑色

问题描述 投票:0回答:1

到目前为止,我一直将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()。因此,正如我所说的,以及在其他答案中发现的那样,我进行了测试,但是无论如何我都得到了黑屏,却没有任何显示。无论是标签,子画面还是其他。那么,在这个新版本中我做错了什么?感谢您的帮助。

python python-3.x python-3.7 pyglet
1个回答
0
投票

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

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()
© www.soinside.com 2019 - 2024. All rights reserved.