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

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

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の導入方法はこちらを参考に

 

スポンサーリンク

 - Fyne, Go言語