Pythonだけで比較的省労力でGUIが作れて趣味プログラマレベルでもとっつきやすいFletについて語りませんか。
公式
https://flet.dev/ サンデープログラマレベルでもGUIに手を出せるのでありがたいけれど、いじっていてよく分からないところもあるので、質問できるスレとかがあるといいかなと思って立ててみた。
AutoComplete便利だけど、独立のコントロールになっているのはヘンじゃないかなぁ。TextFieldとかDropdownとかに統合されているべき機能のような気がする。
最近はこれつかってるなぁ
なんか2.6から自分でdart弄って拡張つくれるのかね
ドラックドロップないのが欠点だ
更新・再描画はPage.updateを明示的に呼ぶスタイルになっていて、それはそういう命令的なやり方をするという設計方針なんだろうから別にいいんだけど、肝心のupdateが変にスマートぶろうとして、変化があったと認識したコントロールしか更新・再描画してくれないんだよね。しかもその認識基準が結構ザルで、内容が変更されているのにupdateがそれを認識してくれないパターンが結構ある。flet.Control.build_update_commandsがたぶん更新・再描画するコントロールを選別するロジックなのかなと思うんだけど、読んでもよくわからなかった。
変にスマートぶろうとせず、コントロールを強制的に更新・再描画するメソッドを追加してくれないかなぁ。更新・再描画の手段がPage.updateしかない状況で、そのupdateがポンコツなのは辛すぎる。
使いやすいし、今後の発展にも期待しているんだけど、画面更新・再描画とか、画面遷移とか、そういう基本的なところの穴がまだ結構残っている印象かや。今後の改善に期待。
コントロールのハッシュ値が変化していればそのコントロールをupdate対象にするという処理にどうもなっているっぽくて、そうだとすれば、更新・再描画を要するような内容の変更があればハッシュ値も変わるようになっていないといけないはずなんだけど、必ずしもそうなっていないんじゃないかと思う。
updateはFlutterのsetStateの関係で呼ぶスタイルになっているのかなと思っている
flet.Refでコントロールツリーの途中への参照が持てるのね。便利
refは使ってないな
current付けるのが好きで無い
Refは、コントロールツリー全体の構造を保ったままその途中ノードに名前を付けるための機能と理解している。
なので、ある程度大きなコントロールツリーでないとありがたみが出てこないのは確かだよね。
DropdownのOptionのcontentプロパティに文字列以外のコントロールも入れられると知って、flet.Rowを入れたんだけど、valueプロパティ(Optionのkeyプロパティ)は(自分の誤解でなければ)文字列化されちゃうのね。keyプロパティにtupleとかsqlite3.Rowを代入しても文字列化されるという仕様はどうなんだろう。任意のコントロールを格納できるようにした意味がないような気もするが……。
全てはControlEventのdataがstr型に引っ張られているきがしている
これイベントハンドラが
スレッドプールから呼ばれてマルチスレッドになってんだよな