Go言語 - WALKでGUI - 何もないウィンドウ
ネット上に(日本語の)情報がほとんど無いのでドキュメントを見ながら勉強。
環境は、Windows8.1(32bit)上のGo言語1.5+WALKライブラリです。
ドキュメントは、GoDocServerを起動した状態で、
http://localhost:6060/pkg/github.com/lxn/walk/
を参照。walk直下に各ウィジェットで使えるメソッドが、declarativeの下に各ウィジェットが持っているフィールドとイベントの情報がある。
とりあえず何もないウィンドウを作ってみる。
MainWindowのイベントとして
OnKeyDown walk.KeyEventHandler OnKeyPress walk.KeyEventHandler OnKeyUp walk.KeyEventHandler OnMouseDown walk.MouseEventHandler OnMouseMove walk.MouseEventHandler OnMouseUp walk.MouseEventHandler OnSizeChanged walk.EventHandler
が用意されていますが、マウス関係は現状動作しないみたいです。(2015/11/26追記 動作する様になりました。)
下記はサイズ変更とキー押下イベントの結果を標準出力に出力するプログラム。
package main import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative" ) import ( "fmt" "os" ) type MyMainWindow struct { *walk.MainWindow } func main() { mw := &MyMainWindow {} MW := MainWindow{ AssignTo: &mw.MainWindow, Title: "メインウィンドウ", MinSize: Size {150, 200}, Size : Size {300, 400}, OnSizeChanged : mw.sizeChanged, // ()は付けない。 OnKeyPress : mw.keyPress, OnMouseDown : mw.mouseDown, // 動作しない? } if _, err := MW.Run(); err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } } // ウィンドウサイズ変更イベント処理 func (mw *MyMainWindow) sizeChanged(){ fmt.Println("Size Changed") } // キー押下イベント処理 func (mw *MyMainWindow) keyPress(k walk.Key){ fmt.Printf("Key Press : %#v\n", k) } // マウスボタン押下イベント処理(動作しない?) func (mw *MyMainWindow) mouseDown(x,y int, btn walk.MouseButton){ fmt.Printf("Mouse Down x:%d y:%d\n", x, y) }