Go言語/Fyne:テーブル(Table)
Go言語用のGUIツールキットFyneのウィンドウトップにExcelのようなテーブル(Table)を設置する方法について解説します。
ベースとなるプログラムは以下の記事のソースコード(BorderLayoutのトップにツールバーを設置したもの)をベースにすることにします。
今回の完成形はこちらです。Excel風とは言い難いですね。ヘッダーはないのと表示だけで編集はできません。csvファイルの表示くらいでしょうか。
ソースコードはこちら。「追加」と書かれたコメント以下を追加してもらえればOKです。dataという2次元配列を表示させていることがわかるかと思います。
package main import ( "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/layout" "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" ) func main() { myApp := app.New() myWindow := myApp.NewWindow("Border Layout") myApp.Settings().SetTheme(theme.LightTheme()) myWindow.Resize(fyne.NewSize(600, 550)) toolbar := widget.NewToolbar( widget.NewToolbarAction(theme.DocumentCreateIcon(), func() { /* ここにボタン押下後の処理を書く */ }), widget.NewToolbarAction(theme.FolderOpenIcon(), func() { /* ここにボタン押下後の処理を書く */ }), widget.NewToolbarAction(theme.DocumentSaveIcon(), func() { /* ここにボタン押下後の処理を書く */ }), widget.NewToolbarSeparator(), //セパレーター widget.NewToolbarAction(theme.ContentCutIcon(), func() { /* ここにボタン押下後の処理を書く */ }), widget.NewToolbarAction(theme.ContentCopyIcon(), func() { /* ここにボタン押下後の処理を書く */ }), widget.NewToolbarAction(theme.ContentPasteIcon(), func() { /* ここにボタン押下後の処理を書く */ }), widget.NewToolbarSpacer(), //スペーサー widget.NewToolbarAction(theme.HelpIcon(), func() { /* ここにボタン押下後の処理を書く */ }), ) //追加 2次元配列 var data = [][]string{ {"1-1", "1-2", "1-3", "1-4", "1-5"}, {"2-1", "2-2", "2-3", "2-4", "2-5"}, {"3-1", "3-2", "3-3", "3-4", "3-5"}} //追加 Table生成 list := widget.NewTable( func() (int, int) { return 3, 5 }, func() fyne.CanvasObject { return widget.NewLabel("wide content") }, func(id widget.TableCellID, o fyne.CanvasObject) { o.(*widget.Label).SetText(data[id.Row][id.Col]) }) content := container.New(layout.NewBorderLayout(toolbar, nil, nil, nil), toolbar, list) myWindow.SetContent(content) myWindow.ShowAndRun() }
スポンサーリンク