Go言語でGTK+3のTreeViewを使ってテーブルウィジェットを作る方法
Go言語でGTK+3のTreeViewを使う方法についてです。TreeViewという名前からディレクトリのようなツリー構造で表すウィジェットかと思ってしまいますが、実態はExcelのような2元表を作るテーブルウィジェットです。これをGo言語から制御しようというわけです。
Go言語からGTK+3を使う方法については以下の記事を参照ください。
Go言語からGTK+3を使うためのライブラリは以下の2つがよく使われていると思います。
今回、TreeViewを使ううにあたっては、github.com/gotk3/gotk3/
を使うことにしました。正直、mattnさんのライブラリの方を使いたかったんですけどね。Twitterでフォローしているし僕のツイートにmattnさん直々にメンションいただいたこともあったので、できればgithub.com/mattn/go-gtk/
を使いたかったのですが、ググってもTreeViewを使う例が見つからなかったんです。誰かやり方わかっている人いたら教えてください。
実行例
こちらが今回の実行例です。
ソースコード
こちらがソースコード。この場ではシンプルなコードに表現したかったのでエラー処理を省いています。適宜追加してください。
package main import ( "github.com/gotk3/gotk3/glib" "github.com/gotk3/gotk3/gtk" ) func main() { gtk.Init(nil) win, _ := gtk.WindowNew(gtk.WINDOW_TOPLEVEL) win.SetTitle("GTK Table Test") win.Connect("destroy", func() { gtk.MainQuit() }) win.SetPosition(gtk.WIN_POS_CENTER) win.SetDefaultSize(600, 300) treeView, _ := gtk.TreeViewNew() cellRenderer, _ := gtk.CellRendererTextNew() column0, _ := gtk.TreeViewColumnNewWithAttribute("ID", cellRenderer, "text", 0) column1, _ := gtk.TreeViewColumnNewWithAttribute("Name", cellRenderer, "text", 1) column2, _ := gtk.TreeViewColumnNewWithAttribute("Address", cellRenderer, "text", 2) treeView.AppendColumn(column0) treeView.AppendColumn(column1) treeView.AppendColumn(column2) listStore, _ := gtk.ListStoreNew(glib.TYPE_STRING, glib.TYPE_STRING, glib.TYPE_STRING) treeView.SetModel(listStore) win.Add(treeView) listStore.Set(listStore.Append(), []int{0, 1, 2}, []interface{}{"1", "鈴木太郎", "東京都"}) listStore.Set(listStore.Append(), []int{0, 1, 2}, []interface{}{"2", "山田隆", "北海道"}) listStore.Set(listStore.Append(), []int{0, 1, 2}, []interface{}{"3", "渡辺花子", "大阪府"}) listStore.Set(listStore.Append(), []int{0, 1, 2}, []interface{}{"4", "池田浩", "福岡県"}) win.ShowAll() gtk.Main() }
スポンサーリンク