Go言語/Fyneでボタンにアイコンを表示させる方法
2021/10/22
Go言語用GUIライブラリFyneでボタンにアイコンを入れる方法です。ただ、あらかじめ用意されたアイコンしか表示できないみたいで、独自アイコンを挿入する方法はありません。(まだソースコードを読み切れていないだけかも…)
以下がボタンの一例です。以下の12個はあくまで一例で、全部で62アイコンが用意されています。
以下が上記ボタンを表示させるソースコードです。前回まではNewButton
メソッドを使いましたが、アイコン付きボタンはNewButtonWithIcon
メソッドです。
package main import ( "fyne.io/fyne" "fyne.io/fyne/app" "fyne.io/fyne/layout" "fyne.io/fyne/theme" "fyne.io/fyne/widget" ) func main() { app := app.New() app.Settings().SetTheme(theme.LightTheme()) window := app.NewWindow("ButtonIcon") btn01 := widget.NewButtonWithIcon("CancelIcon", theme.CancelIcon(), func() {}) btn02 := widget.NewButtonWithIcon("CheckButtonCheckedIcon", theme.CheckButtonCheckedIcon(), func() {}) btn03 := widget.NewButtonWithIcon("ConfirmIcon", theme.ConfirmIcon(), func() {}) btn04 := widget.NewButtonWithIcon("ContentAddIcon", theme.ContentAddIcon(), func() {}) btn05 := widget.NewButtonWithIcon("ContentClearIcon", theme.ContentClearIcon(), func() {}) btn06 := widget.NewButtonWithIcon("ContentCopyIcon", theme.ContentCopyIcon(), func() {}) btn07 := widget.NewButtonWithIcon("ContentCutIcon", theme.ContentCutIcon(), func() {}) btn08 := widget.NewButtonWithIcon("ContentPasteIcon", theme.ContentPasteIcon(), func() {}) btn09 := widget.NewButtonWithIcon("ContentRedoIcon", theme.ContentRedoIcon(), func() {}) btn10 := widget.NewButtonWithIcon("ContentRemoveIcon", theme.ContentRemoveIcon(), func() {}) btn11 := widget.NewButtonWithIcon("ContentUndoIcon", theme.ContentUndoIcon(), func() {}) btn12 := widget.NewButtonWithIcon("DeleteIcon", theme.DeleteIcon(), func() {}) box := fyne.NewContainerWithLayout(layout.NewFixedGridLayout(fyne.NewSize(250, 35)), btn01, btn02, btn03, btn04, btn05, btn06, btn07, btn08, btn09, btn10, btn11, btn12) window.SetContent(box) window.Resize(fyne.NewSize(520, 50)) window.ShowAndRun() }
実行するとこんな感じでボタンが並びます。
VSCodeの拡張機能を使えば簡単にアイコンの種類を検索できますが、以下のパッケージのソースコードを見ても確認することができます。Fyneはまだドキュメントが貧弱ですからね。
<GOPATH>/src/fyne.io/fyne/theme/icons.go
Icon(
で検索するとヒットします。Fyneはまだ新しいこともあってネットに情報があまり転がっておらず、ソースコードを読んだほうが早い場合がありますね。
■ Fyneの導入方法はこちらを参考に
スポンサーリンク