マウス入力2014年9月7日 | |
![]() ファイル使い方ウインドウ上でマウスを動かしたりボタンを押したりすると、コンソール上にメッセージが表示されます。 内容マウスの入力を拾うには、コールバック関数を使います。
win.connect("button-press-event", buttonPress)
win.connect("button-release-event", buttonRelease)
win.connect("scroll-event", buttonScroll)
win.connect("motion-notify-event", motionNotify)
"button-press-event", "button-release-event", "motion-notify-event" を拾うには、次のようにマスクの設定が必要です。
win.set_events(
gtk.gdk.BUTTON_PRESS_MASK |
gtk.gdk.BUTTON_RELEASE_MASK |
gtk.gdk.POINTER_MOTION_MASK
)
"button-press-event", "button-release-event" のコールバック関数でボタンの状態を得るには、第 2 引数 event の event.button, event.state を調べます。
def buttonPress(widget, event):
print("BUTTON PRESS")
mouseButtonKind(event.button)
modifierKind(event.state)
return False
event.button
def mouseButtonKind(button):
if button == 1:
print("LEFT")
...
event.state ("=" ではなく "&" で調べる)
def modifierKind(state):
if state & gtk.gdk.SHIFT_MASK:
print("Shift")
...
"scroll-event" のコールバック関数では、第 2 引数 event の event.direction でホイールの移動方向を調べることができます。
def buttonScroll(widget, event):
if event.direction == gtk.gdk.SCROLL_UP:
print("BUTTON SCROLL UP")
elif event.direction == gtk.gdk.SCROLL_DOWN:
print("BUTTON SCROLL DOWN")
...
event.direction
マウスの位置を知るには、第 2 引数 event の event.x, event.y を調べます。
def motionNotify(widget, event):
print("(%3d, %3d)" % (event.x, event.y))
return False
| |
| PENGUINITIS | |