pyglet.clock モジュールの 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 をサブクラス化して独自の派生 Clock クラスを持つ最良の方法ではないと思います。
質問:
Pyglet でデフォルトの時計を自動的に設定する方法はありますか?
よりエレガントまたはpythonicなソリューションはありますか?
pyglet.clock.set_default(self) 行なしでこれを行うことは可能ですか?