我想继承 pyglet.clock 模块的时钟类,但是我在使用 schedule_interval 时遇到了一些麻烦:
以下代码不打印任何内容,并且对象 c 看起来像根本没有打勾:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pyglet
class Clock(pyglet.clock.Clock):
def __init__(self):
super(Clock, self).__init__()
class Test(object):
def update(self, dt):
print dt
w = pyglet.window.Window()
@w.event
def on_draw():
w.clear()
t = Test()
c = pyglet.clock.Clock()
c.schedule_interval(t.update, 1/60.0)
pyglet.app.run()
但下一个工作正常。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pyglet
class Clock(pyglet.clock.Clock):
def __init__(self):
super(Clock, self).__init__()
pyglet.clock.set_default(self)
class Test(object):
def update(self, dt):
print dt
w = pyglet.window.Window()
@w.event
def on_draw():
w.clear()
t = Test()
c = Clock()
c.schedule_interval(t.update, 1/60.0)
pyglet.app.run()
唯一不同的是Clock的构造方法中的pyglet.clock.set_default(self)语句。
我认为这尚不清楚,或者至少不是将 pyglet.clock.Clock 子类化为拥有自己的派生时钟类的最佳方式。
问题:
有什么方法可以使用 Pyglet 自动设置默认时钟?
有更优雅或pythonic的解决方案吗?
没有 pyglet.clock.set_default(self) 行可以做到这一点吗?