メソッドの書式は,
bind(eventname, procedure[, keyword])
です.
proc{|x,y|procedure(x,y)}
で,"%x,%y"
で獲得できます.
使用例を示します.
#!/usr/local/bin/ruby require 'tk' root = TkRoot.new var = TkVariable.new('bindtest') label = TkLabel.new(root, 'textvariable' => var).pack('fill'=>'both') TkMessage.new(root, 'width' => 150, 'text' => 'このウィンドウの上にカーソルを当ててクリックやキーにタッチすると,いろいろなことが起こりそうです.').pack TkButton.new(root, 'text' => 'quit', 'command' => proc{exit}).pack root.bind('Button-1', proc{label.background('blue')}) root.bind('ButtonRelease-1', proc{label.background('gray85')}) root.bind('Button-2', proc{label.background('green')}) root.bind('ButtonRelease-2', proc{label.background('gray85')}) root.bind('Button-3', proc{label.background('red')}) root.bind('ButtonRelease-3', proc{label.background('gray85')}) root.bind('Double-1', proc{label.background('gold')}) root.bind('Double-2', proc{label.background('purple')}) root.bind('Double-3', proc{label.background('white')}) root.bind('Enter', proc{var.value = 'test!'}) root.bind('Leave', proc{var.value = 'test'}) root.bind('Key', proc{|k| var.value = "You pressed \"#{k}\"."}, "%K") Tk.mainloop上記のプログラムを走らせると,以下のウィンドウが生成されます.どうなるかは,実際にやってみるたほうがお分かりいただけると思います.
イベントとキーワードの一覧を以下に示します.イベント名は
"(イベント)-(修飾イベント名)"
イベント | イベント内容 |
---|---|
Button | マウスボタンが押された |
ButtonPress | マウスボタンが押された |
ButtonRelease | マウスボタンが押した状態から離された |
Double | マウスのダブルクリック |
Key | キーボードのキーが押された |
KeyPress | キーボードのキーが押された |
KeyRelease | キーボードのキーが離された |
Enter | マウスポインタがウィジェットの中に入った |
Leave | マウスポインタがウィジェットの中から出た |
Motion | マウスポインタがウィジェットの中で動いた |
Map | ウィジェットが配置された |
Configure | ウィジェットの属性(位置,サイズなど)が変更された |
Destroy | ウィジェットが強制終了した. |
修飾イベント名 | 意味 |
---|---|
Alt | Altキー |
Button1 B1 | マウスボタン1 (以下Button2〜Button5まである.) |
Control | Ctrlキー |
Lock | Caps Lockキー |
Meta M | Metaキー |
Mod1 M1 | Modifier1 (以下Mod2〜Mod5まである.) |
Return | Returnキー |
Shift | Shiftキー |
イベントキーワード | 意味 |
---|---|
%b | ButtonPress,ButtonReleaseが発生したときのボタン番号 |
%h | Configureが発生したときの高さ情報 |
%k | Keyが発生したときのKey Code |
%w | Configureが発生したときの幅情報 |
%x | マウスポインタのx座標 |
%y | マウスポインタのy座標 |
%A | Keyが発生したときのAscii Code |
%K | Keyが発生したときのKeysym Name |
%N | Keyが発生したときのKeysym Number |
%T | イベントタイプ |
%W | イベント時のwidget |