Go言語/Fyneで簡単なメモアプリ作ったけどFyneはまだまだ発展途上だなって思った
2021/10/22
Go言語用GUIライブラリFyneで簡単なメモアプリを作ったのですが、いろいろ課題というかFyneはまだまだ発展途上なんだなって思ったので書き留めておきます。
こちらが完成例。上にツールバーで今回は簡単にファイルを開くボタンとホゾンボタンを設置して、その下にテキストボックスがあるような簡単なメモアプリです。ソースコードはこの記事の最後に。
ちなみにファイルダイアログはgithub.com/sqweek/dialogライブラリをインストールして使用しました。Linux上だとダイアログめっちゃでかいですがちゃんと使えます。
go get github.com/sqweek/dialog
メモアプリを作って感じたのは以下です。
- Fyneのウィジェットのフォントサイズはカスタマイズできない。
- Entryウィジェットはタブが入らない。
- そもそもウィジェットのバリエーションが貧弱
見ての通りタブが表現されず豆腐文字が入ってしまっています。文字サイズも変えたくても変えるプロパティやメソッドは用意されていません。
まだまだ発展途上だなって感じた次第です。今後の改善に期待したいですね。
ソースコード全文はこちら。
package main
import (
"io/ioutil"
"os"
"fyne.io/fyne"
"fyne.io/fyne/app"
"fyne.io/fyne/layout"
"fyne.io/fyne/theme"
"fyne.io/fyne/widget"
"github.com/sqweek/dialog"
)
func main() {
app := app.New()
app.Settings().SetTheme(theme.LightTheme())
window := app.NewWindow("EntryTest")
window.Resize(fyne.NewSize(450, 400))
textBox := widget.NewMultiLineEntry()
textBox.SetPlaceHolder("Please input your words")
toolbar := widget.NewToolbar(
widget.NewToolbarAction(theme.FolderOpenIcon(), func() {
fname, _ := dialog.File().Filter("golang source files", "go").
Title("Open daialg").Load()
text, _ := ioutil.ReadFile(fname)
textBox.Text = string(text)
}),
widget.NewToolbarAction(theme.DocumentSaveIcon(), func() {
fname, _ := dialog.File().Filter("golang source files", "go").
Title("Save daialg").Save()
ioutil.WriteFile(fname, []byte(textBox.Text), os.ModePerm)
}),
)
box := fyne.NewContainerWithLayout(
layout.NewBorderLayout(toolbar, nil, nil, nil),
toolbar, textBox,
)
window.SetContent(box)
window.ShowAndRun()
}
■ Fyneの導入方法はこちらを参考に
スポンサーリンク


