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の導入方法はこちらを参考に
スポンサーリンク



