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