walk PushButton
今日遊んだコードはこんな感じ
package main import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative" ) import ( "strings" ) func main() { var te1 *walk.TextEdit MainWindow{ Title: "hello", Size: Size{320, 480}, Layout: VBox{}, Children: []Widget { TextEdit { AssignTo: &te1, }, PushButton{ Text: "hello", ToolTipText: `put "hello"`, OnClicked: func() { text := te1.Text() text = strings.Join( []string{text, "hello"}, "") te1.SetText(text) }, }, }, }.Run() }
TextEditのところまでは昨日(だっけ)のとほぼ同じ。PushButtonをとりあえず使ってみた。
Textの部分は、ボタンに書かれる文字列が入る。
中身を見てみると、Property型となってて、さらに見てみると、interface{}型だった。つまり、どんな型の中身を入れても理論上問題はないみたい。実際にint型の123を入れてみたが、コンパイルは通った。
ただ、string型でないと実行時にエラーが起きた。結局string型しか入らないんだろう。なんでそんな仕様になってるかまだわからないけど、とりあえずそんな感じ。
ToolTipTextは、ここに文字列いれておくと、マウスカーソルを合わせたときに説明が出る。
OnClickedは、関数が入る。ボタン押されたときに処理をしてくれる。
中身はwalk.EventHandler型となってるけど、さらに中身を見たらfunc()ってなってたのできっとそうなんだろう。
引数はとれないと思う。だから、データを受け渡しするには、グローバル変数を使うか、今回のコードのようにfunc()を直書きするか、ここでやってるように構造体を作ってそれで処理するか、だと思う。
walk.TextEdit型のメソッドにText()や、SetText()がある。
Text()は、中に書かれているテキストがstring型で返る。
SetText(value string)は、valueの文字列をテキストエリアに表示させる。
他のメソッドもいっぱいあるみたいだけど、それはwalk/textedit.goに書いてあるみたい。
今日はこれだけで満足。
今度はイメージ表示とかできたらいいなぁ。。