はじめに
もともとコンソールでログを出力していた部分をGUIでもログエリアを作って出力できるようにしたい…と思っていたところ、つまづいたところと対処法をメモしておきます。
テキストフィールドで実装してみる
FletはTextFieldというコントロールがあり、これで単一行の入力エリアから複数行のエリアまで自由に作ることができます。
ただ調べてみると、こちらにログを出力するように作った場合、自動で最下部にスクロールするというオプションなどは存在しませんでした。
リストビューで実装してみる
ListViewはその名の通りリストを表示するために使われます。こちらはauto_scrollというオプションがついており、Trueにしておくと更新があった場合は自動で最下部にスクロールされます。
#ログ出力用のリストビューを作成
log = ft.ListView(expand=1, spacing=10, padding=20, auto_scroll=True)
上記のようにリストビューのコントロールを作成したら、
log.controls.append(ft.Text("ここにログを入れます"))
このような形でappendしてやると、リストに追加した上で自動スクロールされます。
ログを非同期で出力する
ログ部分については非同期で処理し、他の操作をできる必要があります。
こちらについてもドキュメントで説明があり、こちらを参考に作ると問題ありませんでした。