Pythonだけで比較的省労力でGUIが作れて趣味プログラマレベルでもとっつきやすいFletについて語りませんか。
公式 https://flet.dev/
探検
【GUI】Fletスレ【Python/Flutter】
2025/01/25(土) 11:24:10.96ID:im0hq6D4
2025/08/21(木) 20:32:27.60ID:NaAwv2o/
dev5066いれてみたけどControlBuilderどこだよ…
2025/08/21(木) 20:33:03.13ID:NaAwv2o/
dev5509だった
2025/08/21(木) 20:48:06.07ID:NaAwv2o/
名前変わったのかよ
2025/08/21(木) 21:11:43.38ID:NaAwv2o/
2025/08/22(金) 09:05:36.13ID:5NhjtIih
ControlBuilderで返されるオブジェクトのrefプロパティに適宜のref名を設定して参照を張るという方法は、ControlBuilderに渡す状態オブジェクト変数が p → q → p …… というように同じ引数になる場合、同じ引数による2回目以降の呼び出しでは効かなくなるという問題がない? だから、ControlBuilderを使う場合にはrefは事実上、使えなくなったものだと思っていたんだが。
2025/08/29(金) 16:32:10.87ID:FvSDmdzS
ControlBuilderをちょっと試してみたが、やっぱり少し重くなることがあるね。自分の書き方が悪いだけなのかもしれないけれど、そうでないとしたら使い所・使い方を選ぶ感じの機能なのかも。全面的にリアクティブUIにしたかったんだけど、これだとちょっと辛いかな。
2025/08/30(土) 10:06:50.47ID:U/OkkUQy
>>38
妥当な方法か否かは分からないが、ControlBuilderの content属性からControlBuilderが生成したその戻り値オブジェクトにアクセスできるみたいね。
妥当な方法か否かは分からないが、ControlBuilderの content属性からControlBuilderが生成したその戻り値オブジェクトにアクセスできるみたいね。
2025/08/30(土) 12:26:49.50ID:tdfvlCm8
直接value触ると怒られるな
もうstateから触れってことか
もうstateから触れってことか
2025/08/31(日) 22:30:51.48ID:OfdewdYG
>>45
ControlBuilderのcontent属性にセットされるのは一回updateされた後っぽい。それまではNone
ControlBuilderのcontent属性にセットされるのは一回updateされた後っぽい。それまではNone
2025/09/01(月) 15:53:48.33ID:5rr2TLhQ
ControlBuilderの仕様って、こんな感じ?
・ 画面にはControlBuilderの第2引数builderの呼び出しによって生成されたコントロールが表示されるが、コントロールツリーにはControlBuilderオブジェクトそのものが格納される。
・ ControlBuilderの第2引数builderの呼び出しによって生成されたコントロールは、いったん画面に表示された後は(?)、ControlBuilderオブジェクトの属性contentに保持されている(そうなる前のcontent属性の値はNone)。生成されたコントロールの属性にアクセスしたいときは、このcontent属性経由でアクセスすることが考えられる。
・ ControlBuilderの第1引数state(その実引数式)は、ControlBuilderの呼び出し時にただ1度だけ評価され、ControlBuilderは以下その値を参照し続ける。したがって、コントロールの仕様がstate.attrに依存する場合は、第1引数としてはstateを渡し、第2引数builderの式の中でstate.attrを参照する形にするのが基本。第1引数にstate.attrを直接渡す形にしてしまうと(それ自身が値の変更を行うメソッドを持っていたり、そもそも値の変更を行う必要がないような場合はともかく)どこかでstate.attr = new_val としてもControlBuilder から状態変更として認識されない。
・ 描画更新・再描画は、第1引数stateの内容変更(おそらくそのハッシュ値の変更?)があったときに、第2引数builderに第1引数stateを引数として与えて呼び出したその戻り値のコントロールを新しいコントロールとする形で行われる。builderは描画更新・再描画のたびに呼び出されるが、ControlBuilderやその第1引数stateは描画更新・再描画のたびに評価されるわけではない。
・ 第1引数stateの内容変更は描画更新・再描画のトリガーになるので、stateオブジェクトはできるだけコンパクトにするのが良い。
・ ControlBuilderで生成されるコントロールにref属性を設定するのは、第2引数builderに渡される状態引数(=第1引数stateの値)が p → q → p …… というように同じ値になる場合(CheckBoxやRadioGroupでよくある)、同じ値による2回目以降の呼び出しでは効かなくなるという問題があるっぽい(キャッシュが働くため、refを設定するコードがスキップされてしまうのだと思われる)。事実上、Refが使えないのだとすると非常に不便なので何か回避法がありそうではあるが……。
・ 画面にはControlBuilderの第2引数builderの呼び出しによって生成されたコントロールが表示されるが、コントロールツリーにはControlBuilderオブジェクトそのものが格納される。
・ ControlBuilderの第2引数builderの呼び出しによって生成されたコントロールは、いったん画面に表示された後は(?)、ControlBuilderオブジェクトの属性contentに保持されている(そうなる前のcontent属性の値はNone)。生成されたコントロールの属性にアクセスしたいときは、このcontent属性経由でアクセスすることが考えられる。
・ ControlBuilderの第1引数state(その実引数式)は、ControlBuilderの呼び出し時にただ1度だけ評価され、ControlBuilderは以下その値を参照し続ける。したがって、コントロールの仕様がstate.attrに依存する場合は、第1引数としてはstateを渡し、第2引数builderの式の中でstate.attrを参照する形にするのが基本。第1引数にstate.attrを直接渡す形にしてしまうと(それ自身が値の変更を行うメソッドを持っていたり、そもそも値の変更を行う必要がないような場合はともかく)どこかでstate.attr = new_val としてもControlBuilder から状態変更として認識されない。
・ 描画更新・再描画は、第1引数stateの内容変更(おそらくそのハッシュ値の変更?)があったときに、第2引数builderに第1引数stateを引数として与えて呼び出したその戻り値のコントロールを新しいコントロールとする形で行われる。builderは描画更新・再描画のたびに呼び出されるが、ControlBuilderやその第1引数stateは描画更新・再描画のたびに評価されるわけではない。
・ 第1引数stateの内容変更は描画更新・再描画のトリガーになるので、stateオブジェクトはできるだけコンパクトにするのが良い。
・ ControlBuilderで生成されるコントロールにref属性を設定するのは、第2引数builderに渡される状態引数(=第1引数stateの値)が p → q → p …… というように同じ値になる場合(CheckBoxやRadioGroupでよくある)、同じ値による2回目以降の呼び出しでは効かなくなるという問題があるっぽい(キャッシュが働くため、refを設定するコードがスキップされてしまうのだと思われる)。事実上、Refが使えないのだとすると非常に不便なので何か回避法がありそうではあるが……。
2025/09/07(日) 12:43:28.89ID:TqDkjIbM
あれ、現時点でインストールするとControlBuilderが見つからないってなるな。>>39-41と同じ状態?
2025/09/07(日) 14:09:29.85ID:TqDkjIbM
StateViewという名前になったのか。こういう変更ってどこかに書いてあったのかな? アルファ版だから、どこにも書いてなかったとしても文句は言えないが。
2025/09/07(日) 23:17:20.34ID:TC5o/1J8
>>48
4点目だけど、描画更新・再描画が行われるのは、第1引数stateの内容変更があったときではなく、第1引数stateの子孫属性に対する代入があったときというのが正確みたいね(元と同じ値を代入したときも描画更新・再描画は行われるみたい)。noteで解説記事を書いている人によると、__set_attr__をフックしているらしい。
4点目だけど、描画更新・再描画が行われるのは、第1引数stateの内容変更があったときではなく、第1引数stateの子孫属性に対する代入があったときというのが正確みたいね(元と同じ値を代入したときも描画更新・再描画は行われるみたい)。noteで解説記事を書いている人によると、__set_attr__をフックしているらしい。
52デフォルトの名無しさん
2025/09/07(日) 23:55:55.13ID:wN29kMQ7 せっかくupdateいらなくなるのに
asyncio.sleepがいるってどうなん……
asyncio.sleepがいるってどうなん……
2025/09/08(月) 00:22:50.28ID:i1Wv6LLA
まぁ、ダイアログ等限定の話なら我慢できるかな。
2025/09/08(月) 17:54:12.61ID:PGku9TnQ
page.run_taskでstate変更しても反映しないな
2025/09/09(火) 22:58:43.69ID:zANAfy0I
タブ周りも結構変わっているのね。Tabsのcontentに(Columnでまとめた)TabBarとTabBarViewを入れるってことでいいの……か?
2025/09/10(水) 21:27:09.31ID:Rtl+OmsU
>>48
最後の点だけど、もうRefを使っても問題ないみたい。修正された?
生成後に部分的な状態変更を必要とするようなカスタムコントロールは、StateViewでは使えないことになるのね。基本的にカスタムコントロールで凝ったことをするのは想定してないってことなのか。
最後の点だけど、もうRefを使っても問題ないみたい。修正された?
生成後に部分的な状態変更を必要とするようなカスタムコントロールは、StateViewでは使えないことになるのね。基本的にカスタムコントロールで凝ったことをするのは想定してないってことなのか。
2025/09/11(木) 10:40:51.92ID:ZLHIwsaj
アルファ版のうちにということだろうけど、ここぞとばかりに色々弄っているな。たしかにこの先破壊的変更は入れづらくなっていくんだろうから、ここでいろいろやっておくのは良いことなんだろうね。
2025/09/18(木) 08:09:43.17ID:6zvJPGqA
明示的にupdateを書くことが(基本的には)なくなるということは、is_updateでTrueを返すようにするということは(基本的には)もうないってことでいいのかな。
ft.context.pageでどこからでもPageにアクセスできるのは地味にありがたい。カスタムコントロールの__init__の中でself.page.hogeとやって「Noneにhogeという属性はありません」と怒られるミスはよくやってしまっていたので。
ft.context.pageでどこからでもPageにアクセスできるのは地味にありがたい。カスタムコントロールの__init__の中でself.page.hogeとやって「Noneにhogeという属性はありません」と怒られるミスはよくやってしまっていたので。
2025/09/18(木) 13:05:21.93ID:DPWCUt9/
ごめん、is_updateじゃない、is_isolated だ。
2025/09/18(木) 19:18:38.40ID:t2Gbg0/Z
1.0当分かかりそうか
2025/09/20(土) 09:50:21.54ID:kxS+pQnh
いまアルファ版(0.7)で、これからベータ版(0.8)→RC版(0.9)を経て1.0 だもんね。noteの解説記事を書いている人によれば、年内くらいじゃないかという見立てのようだけど、どうなんだろうね。
2025/10/06(月) 15:14:18.20ID:QPH3iO32
focus_stopみたいな名前のプロパティでも作って、コントロールへの入力完了後に次の(フォーカスを受け取る)コントロールに自動的にフォーカスが移るようにしてくれないかなぁ……。デスクトップアリでこれがないのは流石にちょっと使いにくいので自分で書いてみたけど結構面倒くさいし、これくらいはライブラリ側に期待しても罰は当たらないと思うんだよね。
autofocusがそういうプロパティかと思っていたんだけど、アレ全然役に立たないのな。何のためにあるんだレベル。
autofocusがそういうプロパティかと思っていたんだけど、アレ全然役に立たないのな。何のためにあるんだレベル。
2025/10/07(火) 18:17:13.86ID:nb9VcTS1
コンテキストメニュー(右クリックメニュー)の機能も欲しいかな。ウェブの解説記事を参考にしてGestureDetector と Stack でそれっぽいものを作るところまではできたんだけど、メニュー以外のところをクリックしたときにメニューの表示を消すというのを簡単にする方法がわからなくて断念した。
何かしら方法はあるんだろうけど、コンテキストメニューくらいは簡単にかけるようになっていると嬉しいかな。
何かしら方法はあるんだろうけど、コンテキストメニューくらいは簡単にかけるようになっていると嬉しいかな。
2025/10/08(水) 11:38:45.62ID:5PMf8mIp
>>63
大きさ0のTextField をStackの奥側に置いておいて、そのon_blurイベントでStack を削除するようにすればそれっぽい感じにできるっぽい。
でもやっぱりもう少しちゃんとした方法が欲しいところだなー。
大きさ0のTextField をStackの奥側に置いておいて、そのon_blurイベントでStack を削除するようにすればそれっぽい感じにできるっぽい。
でもやっぱりもう少しちゃんとした方法が欲しいところだなー。
2025/10/09(木) 19:27:41.53ID:V7lTVJBy
StateViewも何か別のコンセプトに置き換わるみたい。アルファ版ということもあってか、思った以上に流動的なんだね。いじったり、勉強したりするのは1.0が出てからにした方がいいのかも。
66デフォルトの名無しさん
2025/10/16(木) 12:22:09.70ID:S5H+CbkM 触るのやめたよ
2025/10/16(木) 13:59:41.30ID:A2DLovH4
まー、本格的に触るのはもう少し仕様が安定してからでもいいかな感はあるかなぁ。正直、StateView(ControlBuilder)はメインコンセプトっぽいからさすがに変更されることはないだろうと甘く見ていたわ。たしかに新しいcomponentベースの宣言型UIの方が柔軟性は高そうではあるけれども。
ちょっとだけ触ってみたところ、状態変更が連鎖するコードだと「Set changed size during iteration」という実行時エラーで怒られるんだけど(__pending_updatesというset内の各コントロールをupdateしている最中に__pending_updates自体に追加等があったということっぽい)、何か対処法あるのかな。
ちょっとだけ触ってみたところ、状態変更が連鎖するコードだと「Set changed size during iteration」という実行時エラーで怒られるんだけど(__pending_updatesというset内の各コントロールをupdateしている最中に__pending_updates自体に追加等があったということっぽい)、何か対処法あるのかな。
2025/10/17(金) 10:48:52.13ID:NJK8gXIe
状態①の変更に伴い呼び出されるコンポーネント①のコードの中に、別の状態②の変更(それにより別のコンポーネント②のコードが呼び出される)があると67後半のエラーになるっぽい。これを許すとコントロールツリーの一貫性に問題が生じる事態が生じうるということなのかもしれない。
状態①の変更に伴い呼び出されるコンポーネント①のコードの中から別の状態②の変更を発生させるコードを一旦取り除いて、コンポーネント①の完了後にその処理を行うようにしたらエラーが出なくなった(常にこのような対応が可能かは別問題だけど)。
componentベースの宣言型UIという方向性は、個人的にはそんなに悪くない感触かな。仕様が安定するまでは触るのは程々にとどめておくけど。
状態①の変更に伴い呼び出されるコンポーネント①のコードの中から別の状態②の変更を発生させるコードを一旦取り除いて、コンポーネント①の完了後にその処理を行うようにしたらエラーが出なくなった(常にこのような対応が可能かは別問題だけど)。
componentベースの宣言型UIという方向性は、個人的にはそんなに悪くない感触かな。仕様が安定するまでは触るのは程々にとどめておくけど。
2025/11/12(水) 19:13:41.90ID:0pO79JLj
しばらく更新みてなかったけど
Reactみたいになるんか
Reactみたいになるんか
レスを投稿する
ニュース
- 【中国】日本のアニソン歌唱中に強制中断 上海、照明落とされ音楽止まる★4 [♪♪♪★]
- 芸能界ケンカ最強番付を発表「リングなら岡田准一」 横浜流星&新田真剣佑の名前も 1番強いのは誰か [牛丼★]
- 「報道特集」山本恵里伽アナ、日中緊張で「当たり前のことがはっきり言いづらい空気…ショック」 [首都圏の虎★]
- 落ち度はゼレンスキー氏に 内政混乱、市民怒り [蚤の市★]
- 「まだ朝7時に通勤してるんですか?」にじさんじVTuberがXの投稿で炎上、YouTubeで釈明と謝罪 [muffin★]
- 中国通ジャーナリスト「高市首相が反省、撤回必要ない…こういう外交待っていた」「日本のレッドラインを明確に示した」 [お断り★]
- 【実況】博衣こよりのえちえちラムベガス🧪★4
- 【実況】博衣こよりのえちえちラムベガス🧪★3
- 高市早苗に3,000万円の献金を渡した団体、限界突破wwwwwwwwwwwwwwwwwwwwwwww [329329848]
- 🏡
- TBS山本恵里伽アナ「当たり前のことをハッキリ言いづらい空気、ショック」高市発言騒動に関連して [369521721]
- おさかなさんあつまれえ!!!
