Pythonだけで比較的省労力でGUIが作れて趣味プログラマレベルでもとっつきやすいFletについて語りませんか。
公式 https://flet.dev/
探検
【GUI】Fletスレ【Python/Flutter】
2025/01/25(土) 11:24:10.96ID:im0hq6D4
2025/01/25(土) 11:33:52.66ID:im0hq6D4
サンデープログラマレベルでもGUIに手を出せるのでありがたいけれど、いじっていてよく分からないところもあるので、質問できるスレとかがあるといいかなと思って立ててみた。
AutoComplete便利だけど、独立のコントロールになっているのはヘンじゃないかなぁ。TextFieldとかDropdownとかに統合されているべき機能のような気がする。
AutoComplete便利だけど、独立のコントロールになっているのはヘンじゃないかなぁ。TextFieldとかDropdownとかに統合されているべき機能のような気がする。
2025/01/25(土) 12:48:02.46ID:ax1LVfhV
おちんぽ戦士です
2025/01/28(火) 23:36:54.27ID:JiUtuXSy
最近はこれつかってるなぁ
なんか2.6から自分でdart弄って拡張つくれるのかね
ドラックドロップないのが欠点だ
なんか2.6から自分でdart弄って拡張つくれるのかね
ドラックドロップないのが欠点だ
2025/01/28(火) 23:37:36.33ID:JiUtuXSy
↑0.26.0やわ
2025/01/29(水) 12:28:23.11ID:cY4GKwgV
更新・再描画はPage.updateを明示的に呼ぶスタイルになっていて、それはそういう命令的なやり方をするという設計方針なんだろうから別にいいんだけど、肝心のupdateが変にスマートぶろうとして、変化があったと認識したコントロールしか更新・再描画してくれないんだよね。しかもその認識基準が結構ザルで、内容が変更されているのにupdateがそれを認識してくれないパターンが結構ある。flet.Control.build_update_commandsがたぶん更新・再描画するコントロールを選別するロジックなのかなと思うんだけど、読んでもよくわからなかった。
変にスマートぶろうとせず、コントロールを強制的に更新・再描画するメソッドを追加してくれないかなぁ。更新・再描画の手段がPage.updateしかない状況で、そのupdateがポンコツなのは辛すぎる。
変にスマートぶろうとせず、コントロールを強制的に更新・再描画するメソッドを追加してくれないかなぁ。更新・再描画の手段がPage.updateしかない状況で、そのupdateがポンコツなのは辛すぎる。
2025/01/29(水) 12:31:54.27ID:cY4GKwgV
使いやすいし、今後の発展にも期待しているんだけど、画面更新・再描画とか、画面遷移とか、そういう基本的なところの穴がまだ結構残っている印象かや。今後の改善に期待。
2025/01/29(水) 18:09:35.24ID:cY4GKwgV
コントロールのハッシュ値が変化していればそのコントロールをupdate対象にするという処理にどうもなっているっぽくて、そうだとすれば、更新・再描画を要するような内容の変更があればハッシュ値も変わるようになっていないといけないはずなんだけど、必ずしもそうなっていないんじゃないかと思う。
2025/01/29(水) 20:18:09.89ID:CZA1SJMZ
updateはFlutterのsetStateの関係で呼ぶスタイルになっているのかなと思っている
2025/01/31(金) 10:01:19.40ID:MwhWyD1S
flet.Refでコントロールツリーの途中への参照が持てるのね。便利
2025/02/01(土) 08:54:09.28ID:RZ7MAS+G
refは使ってないな
current付けるのが好きで無い
current付けるのが好きで無い
2025/02/01(土) 10:25:44.91ID:VlXxrmDc
Refは、コントロールツリー全体の構造を保ったままその途中ノードに名前を付けるための機能と理解している。
なので、ある程度大きなコントロールツリーでないとありがたみが出てこないのは確かだよね。
なので、ある程度大きなコントロールツリーでないとありがたみが出てこないのは確かだよね。
2025/02/07(金) 21:26:51.95ID:aa7zWOX/
go版はいつ?
2025/02/14(金) 19:21:30.94ID:5ZxZeKkO
DropdownのOptionのcontentプロパティに文字列以外のコントロールも入れられると知って、flet.Rowを入れたんだけど、valueプロパティ(Optionのkeyプロパティ)は(自分の誤解でなければ)文字列化されちゃうのね。keyプロパティにtupleとかsqlite3.Rowを代入しても文字列化されるという仕様はどうなんだろう。任意のコントロールを格納できるようにした意味がないような気もするが……。
2025/02/14(金) 20:33:40.13ID:g5/dL1pg
全てはControlEventのdataがstr型に引っ張られているきがしている
2025/02/18(火) 06:28:21.09ID:0A5hl3HK
これイベントハンドラが
スレッドプールから呼ばれてマルチスレッドになってんだよな
スレッドプールから呼ばれてマルチスレッドになってんだよな
2025/03/21(金) 14:26:54.95ID:Vdi6rcDR
0.27が出ているみたい。Dropdownコントロールが置き換えで微妙に仕様が変わっているみたいね。
入力文字列に基づく絞り込み表示がされるようになったのは嬉しいけれど、どうせならsuggestionプロパティを追加する等してAutoComplete相当の機能も取り込んでくれないかな。
あと、DropdownOptionにcontent属性を指定していてる場合、選択時にドロップダウンボックス内に表示されるのが(content属性ではなく)key属性の内容になっている(0.26ではcontent属性の内容だった)。これが意図した仕様変更なら改悪なのでは。
入力文字列に基づく絞り込み表示がされるようになったのは嬉しいけれど、どうせならsuggestionプロパティを追加する等してAutoComplete相当の機能も取り込んでくれないかな。
あと、DropdownOptionにcontent属性を指定していてる場合、選択時にドロップダウンボックス内に表示されるのが(content属性ではなく)key属性の内容になっている(0.26ではcontent属性の内容だった)。これが意図した仕様変更なら改悪なのでは。
2025/03/25(火) 19:20:32.59ID:z+9Q790S
Reactでいいや
2025/03/26(水) 10:01:22.62ID:IczPUqJi
他のコントロールの手前にコントロール表示を重ねること(オーバーレイ表示)ができるのって、Page.overlayに入れられるコントロール(AlertDialog等)か、そうでなければStackの中だけか。
普通のColumnとかがオーバーレイ表示できるオプションがあれば便利なんだけどなぁ。
普通のColumnとかがオーバーレイ表示できるオプションがあれば便利なんだけどなぁ。
2025/03/29(土) 15:56:48.60ID:EL1+Ga+h
expand: True と width をともに指定したときの挙動って、親コントロールがRow やColumnのときとそれ以外のときとでひょっとして異なる?(RowやColumnのときはexpand: Trueが優先されるのに対し、それ以外のときはwidth指定が優先される?)
本来的には親コントロールがRowやColumn以外のときにもexpandを指定できるのがおかしいのかもしれないけれど、そこを許容するのであれば、他の部分の仕様も合わせておいて欲しかった。
本来的には親コントロールがRowやColumn以外のときにもexpandを指定できるのがおかしいのかもしれないけれど、そこを許容するのであれば、他の部分の仕様も合わせておいて欲しかった。
2025/03/29(土) 19:06:31.44ID:tGLPvbVs
Page.on_keyboard_eventは、キー押しっぱなしのリピート入力には対応していないか。
2025/04/02(水) 13:41:28.03ID:ls9ya9jn
TextFieldにフォーカスを当てたときにTextField内に文字列があったらそれを選択状態にするというのをやりたいんだけど、方法がわからない。わりとありがちなニーズだと思うんだけど、
そもそも、TextField内の文字列を選択状態にするというメソッドがないような……。
仮に、今は方法がないのだとしても、バージョンアップなどでそのうち対応しそうではあるけれど、現状だとまだできないのかな?
そもそも、TextField内の文字列を選択状態にするというメソッドがないような……。
仮に、今は方法がないのだとしても、バージョンアップなどでそのうち対応しそうではあるけれど、現状だとまだできないのかな?
2025/04/17(木) 09:31:51.54ID:jdK9MviC
Viewを新規作成したときのアニメーションはあんまり要らないかな。設定で切り替えられるようになっていればいいのにとちょっと思う。
2025/04/17(木) 18:59:44.56ID:1klF/n3v
遷移変えたいならPageTransitionTheme
2025/04/18(金) 19:21:20.55ID:ZUjnUsfX
おお、そんなところで設定できたのね。Themeは見てなかったよ。
2025/04/18(金) 19:40:26.00ID:ZUjnUsfX
おお、そんなところで設定できたのね。Themeは見てなかったよ。
2025/04/23(水) 05:54:00.38ID:curLR6rF
AlertDialogに「OK」「Cancel」のテキストボタンを置いて、それぞれを押したときの処理を書くという場合、テキストボタンのon_clickにlambdaで書ける内容なら苦労しないんだけど、文が必要なときはどうするのがいいかな?
今は、関数を作ってテキストボタンのon_clickに指定しているんだけど、わざわざ名前付きの関数を作らなきゃいけないのがちょっと不満なんだよね。よくあるGUIライブラリみたいに戻り値で分岐させる方が楽だったなという感が拭えなくて。
今は、関数を作ってテキストボタンのon_clickに指定しているんだけど、わざわざ名前付きの関数を作らなきゃいけないのがちょっと不満なんだよね。よくあるGUIライブラリみたいに戻り値で分岐させる方が楽だったなという感が拭えなくて。
2025/05/10(土) 13:31:23.16ID:J+Qfv1kZ
バージョン上げるとちょこちょこエラーになる…
2025/07/30(水) 13:42:31.22ID:9cD2Qfoh
1か月くらい前に1.0アルファ版が出ていたのね。ちょっと触る時間がないんだけど、結構再設計されている部分があるみたい。
2025/07/30(水) 14:00:29.27ID:Meqfu9qd
リアクティブプログラミングスタイルの記述が気になっているけど触っていない
2025/08/03(日) 21:32:11.70ID:2B5I/jfB
レイアウト系コントロールのcontrolsプロパティに、たとえばRowとCheckboxとLiptViewを突っ込むと、VSCodeのPylanceから「型"list[Row | Checkbox | ListView]"の引数を、関数"__init__"の型"list[Control]" のパラメーター"controls"に割り当てることはできません」って警告が出て鬱陶しいんだけど正攻法で抑止する方法って何かないかな。
Row, Checkbox, ListViewがControlの下位クラスってことを型チェッカーが把握してないってことだと思うんだけど。
Row, Checkbox, ListViewがControlの下位クラスってことを型チェッカーが把握してないってことだと思うんだけど。
2025/08/04(月) 14:31:12.98ID:IfdApRBS
RowとCheckboxとListViewをすべてControlにcastすれば警告は抑止できるけど、さすがにそんなこといちいちやっていられないし。
たぶん何か簡単な方法があると思うんだけどなぁ。
たぶん何か簡単な方法があると思うんだけどなぁ。
2025/08/04(月) 17:37:16.08ID:QEghF0O/
昔それなったことあるけど
今単純にColumnのcontrolsにRow, Checkbox, ListViewを突っ込んだだけだとでないな
今単純にColumnのcontrolsにRow, Checkbox, ListViewを突っ込んだだけだとでないな
3431-32
2025/08/04(月) 18:49:51.62ID:IfdApRBS 原因は一応分かったかも。
中のコントロールにflet.Refで参照を張っているんだけどどうやら角括弧による型付きRefで参照を張ると警告が出るっぽい。単にft.Ref() にしたら警告が出なくなった。ただ、動作に問題がないかは要確認かな。何でそうなるのかもまだきちんとは分かってないし。
中のコントロールにflet.Refで参照を張っているんだけどどうやら角括弧による型付きRefで参照を張ると警告が出るっぽい。単にft.Ref() にしたら警告が出なくなった。ただ、動作に問題がないかは要確認かな。何でそうなるのかもまだきちんとは分かってないし。
2025/08/05(火) 16:12:27.14ID:d07nDUZU
ジェネリクスの共変とか反変とかの概念が関係あるみたいね、あまりよく分かってないが。基底型がBで派生型がDのとき、list[D]がlist[B]の派生型になるとは限らないとか何とか。本当は型理論とかまじめに勉強すべきなんだろうけど、それはちょっとしんどいなぁ……。
2025/08/14(木) 22:21:20.82ID:ZKu9lsh4
@data_viewにちょっと触ってみた。before_updateに色々突っ込まずに済むようになったみたいでそれ自体はいい感じ。
ただ、親コントロール.controls[インデックス] = 新コントロールという感じで更新するとき、インデックス(親コントロールの何番目の子要素か)をハードコーティングしたくないんだけど、あまりうまく行く方法が見つからなくて困り中。Refでやるのが普通かなと思ったんだけど、@data_viewはメモ化しているみたいで、キャッシュからコントロールが返されるときにうまくいかないみたい。
あまり触る時間もないので当面はハードコーティングで済ませて、ドキュメントが公開された後にあらためて検討することになりそう。
ただ、親コントロール.controls[インデックス] = 新コントロールという感じで更新するとき、インデックス(親コントロールの何番目の子要素か)をハードコーティングしたくないんだけど、あまりうまく行く方法が見つからなくて困り中。Refでやるのが普通かなと思ったんだけど、@data_viewはメモ化しているみたいで、キャッシュからコントロールが返されるときにうまくいかないみたい。
あまり触る時間もないので当面はハードコーティングで済ませて、ドキュメントが公開された後にあらためて検討することになりそう。
2025/08/18(月) 15:46:09.26ID:1pvPWxPY
TextFieldを含むカスタムコントロールXと、その状態を保持するXStateクラスとを作ってControlBuilderでリアクティブに処理しようとする場合、とりあえずxにxstateへの参照を持たせて、TextFieldのon_changeの中で x.state.value = e.control.value みたいな感じにしているんだけど、こんな設計でいいのかな。これだと入力のたびにTextField(あるいはそれを含むカスタムコントロール全体?)が再生成されることになるんだけどリアクティブUIってそんなもの?
あまり、他のフレームワークとか触ったことがないので勝手がよくわからない。
あまり、他のフレームワークとか触ったことがないので勝手がよくわからない。
2025/08/18(月) 18:58:19.77ID:HwAf1a14
ControlBuilderで生成されるコントロールが持つメソッド(具体的にはfocus)の呼び出しって、どう書けばいいんだろ?
controlsリストの最初の要素としてfocusを持つコントロールを生成して返すControlBuilderを置いた上で、他の場所でself.controls[0].focus って書いたら、「ControlBuilderはfocusという名前のメソッドを持ってない」と怒られたんだが。
controlsリストの最初の要素としてfocusを持つコントロールを生成して返すControlBuilderを置いた上で、他の場所でself.controls[0].focus って書いたら、「ControlBuilderはfocusという名前のメソッドを持ってない」と怒られたんだが。
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が生成したその戻り値オブジェクトにアクセスできるみたいね。
レスを投稿する
ニュース
- 高市首相を「こんなバカ」呼ばわりで物議…人気ミュージシャンが声明「感情的で稚拙だった。適切な言い方でなかった」 [muffin★]
- 【物価高対策】「おこめ券を配布しません」大阪府交野の市長が明言「経費率が高い」「今高い米をムリして…」 [1ゲットロボ★]
- 芸能界ケンカ最強番付を発表「リングなら岡田准一」 横浜流星&新田真剣佑の名前も 1番強いのは誰か [牛丼★]
- 中国通ジャーナリスト「高市首相が反省、撤回必要ない…こういう外交待っていた」「日本のレッドラインを明確に示した」 ★2 [お断り★]
- 「報道特集」山本恵里伽アナ、日中緊張で「当たり前のことがはっきり言いづらい空気…ショック」 [首都圏の虎★]
- たぬかなの“結婚隠し”に「弱者男性ビジネス」の声…本人が異例の対応「支払いの履歴持ってきてくれたら返金するから連絡してや」 [muffin★]
- 【DAZN】フォーミュラGP【F1 2 3 SF P】Lap1812
- 【フジテレビ】2025 FORMULA 1【NEXT】Lap605
- 他サポ2025-276
- とらせん IP
- こいせん 全レス転載禁止
- 巨専】 ★3
- お前ら「高市擁護は工作業者!!」高市支持者「高市批判は工作業者!!」これもう仲良しだろ [469534301]
- 【実況】博衣こよりのえちえちラムベガス🧪★6
- 高市早苗に3,000万円の献金を渡した団体、限界突破wwwwwwwwwwwwwwwwwwwwwwww [329329848]
- おさかなさんあつまれえ
- 【悲報】バイカー「ガソリンスタンドでパンク修理してよいか尋ねたら、向かいの公園でやれと言われた。一生忘れんわ」 [802034645]
- ルセラフィムのスパゲティて曲にめちゃハマってる。ガチのまじで毎日聴いてるわ。多分ネトウヨ以外の日本人皆聴いてると思う [881676371]
