非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Go言語/Fyne:ツールバーとアイコンボタン

      2021/10/22

Go言語用のGUIツールキットFyneのウィンドウトップにツールバーとアイコンボタンを設置する方法について解説します。

ベースとなるプログラムは前回のソースコード(BorderLayoutを設置したもの)をベースにすることにします。

今回の完成形はこちらです。BorderLayoutのTopにツールバーを設置し、その上にアイコンボタンを配置していきます。途中セパレーターという仕切りが入っているのと、?ボタンが離れて最右に設置されているのが特徴です。

 

ソースコードはこちら。前回記事に「追加」と書かれたコメント以下を追加してもらえればOKです。

package main

import (
  "image/color"

  "fyne.io/fyne/v2"
  "fyne.io/fyne/v2/app"
  "fyne.io/fyne/v2/canvas"
  "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, 400))

  left := canvas.NewText("left", color.Black)
  middle := canvas.NewText("content", color.Black)

  //追加
  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() { /* ここにボタン押下後の処理を書く */ }),
  )
  //ツールバーをBorderLayoutのTopにセット
  content := container.New(layout.NewBorderLayout(toolbar, nil, left, nil),
    toolbar, left, middle)
  myWindow.SetContent(content)
  myWindow.ShowAndRun()
}
 

 

 

スポンサーリンク

 - Fyne, Go言語