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()
到目前为止,我一直将 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()