簡単にマウス位置が取れたので、今度はボタンの入力方法を調べてテスト。入力が取れたら、何か画面に変化があったほうが楽しそう。左クリックと右クリックで何かやることを考えてみます。
from pyglet.window import mouse
すると、mouse.LEFT とか mouse.RIGHT が使える- ボタンが押されたときに呼ばれる、on_mouse_press 関数を実装する
のがポイント。昨日のコードにそのまま追加しましょう。
ボタンが押された座標が取得できるので、それを使って、表示しているテキストの場所を変化させるのが簡単ですね。左クリックしたらテキストの位置をマウスの位置に移動し、右クリックしたら初期位置(画面の中央)に移動する、という仕様で作ってみようと思います。
import pyglet
from pyglet.window import mouse
window = pyglet.window.Window()
window.set_mouse_visible(True)
label = pyglet.text.Label('Mouse Test',
font_name='Times New Roman',
font_size=36,
x=window.width//2, y=window.height//2,
anchor_x='center', anchor_y='center')
@window.event
def on_draw():
window.clear()
label.draw()
@window.event
def on_mouse_motion(x, y, dx, dy):
label.text = 'x={} y={} dx={} dy={}'.format(x, y, dx, dy)
@window.event
def on_mouse_drag(x, y, dx, dy, buttons, modifiers):
if buttons & mouse.LEFT:
label.x += dx
label.y += dy
@window.event
def on_mouse_press(x, y, button, modifiers):
if button & mouse.LEFT:
# 左ボタンが押されたら、マウスカーソル位置にテキストを移動
label.x = x
label.y = y
elif button & mouse.RIGHT:
# 右ボタンが押されたら、画面の中心にテキストを移動
label.x = window.width // 2
label.y = window.height // 2
pyglet.app.run()
ちょっと長くなってきたかな…。でも、import の1行と on_mouse_press が追加されただけ。まだ簡単!