Go言語用GUIライブラリ「Fyne」を使ってみた
2021/10/22
以前、Go+GTK+でGUIアプリの作り方を紹介しましたが、なんと「Fyne」という100 %ピュアGoで実装されたGUIライブラリがあるとのことで早速試してみました。
いつから登場したのかわかりませんが、Fyneに関する記事の日付からすると2019年の秋くらいですかね。
まだ新しいライブラリなだけに情報も少ないし、ウィジェットもあまり多くなさそうです。ただ、ここ直近の注目度からすると今後進化していくんじゃないかと期待できます。
今回はインストール方法から簡単なプログラムの作り方を紹介します。
Fyneのインストール
コンソールから以下のコマンドでFyneをインストールできます。
$ go get fyne.io/fyne
実はこれだけでは使えず、OpenGLをインストールする必要があります。以下はUbuntu系Linuxでのインストール例です。
$ sudo apt-get install freeglut3-dev libglew1.5-dev
これで、Fyneを使う環境が整いました。
Fyneプログラム例
以下の公式サイトのサンプルを参考に作成してみました。
https://fyne.io/develop/firstapp
package main
import (
"fyne.io/fyne/app"
"fyne.io/fyne/widget"
)
func main() {
a := app.New()
w := a.NewWindow("Hello")
w.SetContent(widget.NewVBox(
widget.NewLabel("Hello Fyne!"),
widget.NewButton("Quit", func() {
a.Quit()
}),
))
w.ShowAndRun()
}
実行例がこちらです。「Quit」ボタンでアプリを終了します。デフォルトはダークカラーみたいです。
僕はダーク系が嫌いなので(VSCodeもライトカラーにしている)、ライトカラーにしてみます。ソースコードは以下の通り。
package main
import (
"fyne.io/fyne/app"
"fyne.io/fyne/widget"
"fyne.io/fyne/theme" //追加
)
func main() {
a := app.New()
a.Settings().SetTheme(theme.LightTheme()) //追加
w := a.NewWindow("Hello")
w.SetContent(widget.NewVBox(
widget.NewLabel("Hello Fyne!"),
widget.NewButton("Quit", func() {
a.Quit()
}),
))
w.ShowAndRun()
}
ご覧の通りライトカラーになりました。僕はこちらの方が好きですね。
次にウィンドウサイズを大きくしてみましょう。ソースコードは以下の通り。
package main
import (
"fyne.io/fyne" //追加
"fyne.io/fyne/app"
"fyne.io/fyne/widget"
"fyne.io/fyne/theme"
)
func main() {
a := app.New()
a.Settings().SetTheme(theme.LightTheme())
w := a.NewWindow("Hello")
w.SetContent(widget.NewVBox(
widget.NewLabel("Hello Fyne!"),
widget.NewButton("Quit", func() {
a.Quit()
}),
))
w.Resize(fyne.NewSize(400,200)) //追加
w.ShowAndRun()
}
最初からサイズを設定するのではなく、ウィンドウを出現させる前にリサイズするみたいですね。実行例は以下の通り。
ボタンの位置がちょっと変ですが、レイアウトやウィジェットサイズなどはいずれ….。
スポンサーリンク


