【GUI】Fletスレ【Python/Flutter】 (57レス)
【GUI】Fletスレ【Python/Flutter】 http://mevius.5ch.net/test/read.cgi/tech/1737771850/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
1: デフォルトの名無しさん [sage] 2025/01/25(土) 11:24:10.96 ID:im0hq6D4 Pythonだけで比較的省労力でGUIが作れて趣味プログラマレベルでもとっつきやすいFletについて語りませんか。 公式 https://flet.dev/ http://mevius.5ch.net/test/read.cgi/tech/1737771850/1
2: デフォルトの名無しさん [sage] 2025/01/25(土) 11:33:52.66 ID:im0hq6D4 サンデープログラマレベルでもGUIに手を出せるのでありがたいけれど、いじっていてよく分からないところもあるので、質問できるスレとかがあるといいかなと思って立ててみた。 AutoComplete便利だけど、独立のコントロールになっているのはヘンじゃないかなぁ。TextFieldとかDropdownとかに統合されているべき機能のような気がする。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/2
3: デフォルトの名無しさん [sage] 2025/01/25(土) 12:48:02.46 ID:ax1LVfhV おちんぽ戦士です http://mevius.5ch.net/test/read.cgi/tech/1737771850/3
4: デフォルトの名無しさん [sage] 2025/01/28(火) 23:36:54.27 ID:JiUtuXSy 最近はこれつかってるなぁ なんか2.6から自分でdart弄って拡張つくれるのかね ドラックドロップないのが欠点だ http://mevius.5ch.net/test/read.cgi/tech/1737771850/4
5: デフォルトの名無しさん [sage] 2025/01/28(火) 23:37:36.33 ID:JiUtuXSy ↑0.26.0やわ http://mevius.5ch.net/test/read.cgi/tech/1737771850/5
6: デフォルトの名無しさん [sage] 2025/01/29(水) 12:28:23.11 ID:cY4GKwgV 更新・再描画はPage.updateを明示的に呼ぶスタイルになっていて、それはそういう命令的なやり方をするという設計方針なんだろうから別にいいんだけど、肝心のupdateが変にスマートぶろうとして、変化があったと認識したコントロールしか更新・再描画してくれないんだよね。しかもその認識基準が結構ザルで、内容が変更されているのにupdateがそれを認識してくれないパターンが結構ある。flet.Control.build_update_commandsがたぶん更新・再描画するコントロールを選別するロジックなのかなと思うんだけど、読んでもよくわからなかった。 変にスマートぶろうとせず、コントロールを強制的に更新・再描画するメソッドを追加してくれないかなぁ。更新・再描画の手段がPage.updateしかない状況で、そのupdateがポンコツなのは辛すぎる。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/6
7: デフォルトの名無しさん [sage] 2025/01/29(水) 12:31:54.27 ID:cY4GKwgV 使いやすいし、今後の発展にも期待しているんだけど、画面更新・再描画とか、画面遷移とか、そういう基本的なところの穴がまだ結構残っている印象かや。今後の改善に期待。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/7
8: デフォルトの名無しさん [sage] 2025/01/29(水) 18:09:35.24 ID:cY4GKwgV コントロールのハッシュ値が変化していればそのコントロールをupdate対象にするという処理にどうもなっているっぽくて、そうだとすれば、更新・再描画を要するような内容の変更があればハッシュ値も変わるようになっていないといけないはずなんだけど、必ずしもそうなっていないんじゃないかと思う。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/8
9: デフォルトの名無しさん [sage] 2025/01/29(水) 20:18:09.89 ID:CZA1SJMZ updateはFlutterのsetStateの関係で呼ぶスタイルになっているのかなと思っている http://mevius.5ch.net/test/read.cgi/tech/1737771850/9
10: デフォルトの名無しさん [sage] 2025/01/31(金) 10:01:19.40 ID:MwhWyD1S flet.Refでコントロールツリーの途中への参照が持てるのね。便利 http://mevius.5ch.net/test/read.cgi/tech/1737771850/10
11: デフォルトの名無しさん [sage] 2025/02/01(土) 08:54:09.28 ID:RZ7MAS+G refは使ってないな current付けるのが好きで無い http://mevius.5ch.net/test/read.cgi/tech/1737771850/11
12: デフォルトの名無しさん [sage] 2025/02/01(土) 10:25:44.91 ID:VlXxrmDc Refは、コントロールツリー全体の構造を保ったままその途中ノードに名前を付けるための機能と理解している。 なので、ある程度大きなコントロールツリーでないとありがたみが出てこないのは確かだよね。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/12
13: デフォルトの名無しさん [sage] 2025/02/07(金) 21:26:51.95 ID:aa7zWOX/ go版はいつ? http://mevius.5ch.net/test/read.cgi/tech/1737771850/13
14: デフォルトの名無しさん [sage] 2025/02/14(金) 19:21:30.94 ID:5ZxZeKkO DropdownのOptionのcontentプロパティに文字列以外のコントロールも入れられると知って、flet.Rowを入れたんだけど、valueプロパティ(Optionのkeyプロパティ)は(自分の誤解でなければ)文字列化されちゃうのね。keyプロパティにtupleとかsqlite3.Rowを代入しても文字列化されるという仕様はどうなんだろう。任意のコントロールを格納できるようにした意味がないような気もするが……。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/14
15: デフォルトの名無しさん [sage] 2025/02/14(金) 20:33:40.13 ID:g5/dL1pg 全てはControlEventのdataがstr型に引っ張られているきがしている http://mevius.5ch.net/test/read.cgi/tech/1737771850/15
16: デフォルトの名無しさん [sage] 2025/02/18(火) 06:28:21.09 ID:0A5hl3HK これイベントハンドラが スレッドプールから呼ばれてマルチスレッドになってんだよな http://mevius.5ch.net/test/read.cgi/tech/1737771850/16
17: デフォルトの名無しさん [sage] 2025/03/21(金) 14:26:54.95 ID:Vdi6rcDR 0.27が出ているみたい。Dropdownコントロールが置き換えで微妙に仕様が変わっているみたいね。 入力文字列に基づく絞り込み表示がされるようになったのは嬉しいけれど、どうせならsuggestionプロパティを追加する等してAutoComplete相当の機能も取り込んでくれないかな。 あと、DropdownOptionにcontent属性を指定していてる場合、選択時にドロップダウンボックス内に表示されるのが(content属性ではなく)key属性の内容になっている(0.26ではcontent属性の内容だった)。これが意図した仕様変更なら改悪なのでは。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/17
18: デフォルトの名無しさん [sage] 2025/03/25(火) 19:20:32.59 ID:z+9Q790S Reactでいいや http://mevius.5ch.net/test/read.cgi/tech/1737771850/18
19: デフォルトの名無しさん [sage] 2025/03/26(水) 10:01:22.62 ID:IczPUqJi 他のコントロールの手前にコントロール表示を重ねること(オーバーレイ表示)ができるのって、Page.overlayに入れられるコントロール(AlertDialog等)か、そうでなければStackの中だけか。 普通のColumnとかがオーバーレイ表示できるオプションがあれば便利なんだけどなぁ。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/19
20: デフォルトの名無しさん [sage] 2025/03/29(土) 15:56:48.60 ID:EL1+Ga+h expand: True と width をともに指定したときの挙動って、親コントロールがRow やColumnのときとそれ以外のときとでひょっとして異なる?(RowやColumnのときはexpand: Trueが優先されるのに対し、それ以外のときはwidth指定が優先される?) 本来的には親コントロールがRowやColumn以外のときにもexpandを指定できるのがおかしいのかもしれないけれど、そこを許容するのであれば、他の部分の仕様も合わせておいて欲しかった。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/20
21: デフォルトの名無しさん [sage] 2025/03/29(土) 19:06:31.44 ID:tGLPvbVs Page.on_keyboard_eventは、キー押しっぱなしのリピート入力には対応していないか。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/21
22: デフォルトの名無しさん [sage] 2025/04/02(水) 13:41:28.03 ID:ls9ya9jn TextFieldにフォーカスを当てたときにTextField内に文字列があったらそれを選択状態にするというのをやりたいんだけど、方法がわからない。わりとありがちなニーズだと思うんだけど、 そもそも、TextField内の文字列を選択状態にするというメソッドがないような……。 仮に、今は方法がないのだとしても、バージョンアップなどでそのうち対応しそうではあるけれど、現状だとまだできないのかな? http://mevius.5ch.net/test/read.cgi/tech/1737771850/22
23: デフォルトの名無しさん [sage] 2025/04/17(木) 09:31:51.54 ID:jdK9MviC Viewを新規作成したときのアニメーションはあんまり要らないかな。設定で切り替えられるようになっていればいいのにとちょっと思う。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/23
24: デフォルトの名無しさん [sage] 2025/04/17(木) 18:59:44.56 ID:1klF/n3v 遷移変えたいならPageTransitionTheme http://mevius.5ch.net/test/read.cgi/tech/1737771850/24
25: デフォルトの名無しさん [sage] 2025/04/18(金) 19:21:20.55 ID:ZUjnUsfX おお、そんなところで設定できたのね。Themeは見てなかったよ。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/25
26: デフォルトの名無しさん [sage] 2025/04/18(金) 19:40:26.00 ID:ZUjnUsfX おお、そんなところで設定できたのね。Themeは見てなかったよ。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/26
27: デフォルトの名無しさん [sage] 2025/04/23(水) 05:54:00.38 ID:curLR6rF AlertDialogに「OK」「Cancel」のテキストボタンを置いて、それぞれを押したときの処理を書くという場合、テキストボタンのon_clickにlambdaで書ける内容なら苦労しないんだけど、文が必要なときはどうするのがいいかな? 今は、関数を作ってテキストボタンのon_clickに指定しているんだけど、わざわざ名前付きの関数を作らなきゃいけないのがちょっと不満なんだよね。よくあるGUIライブラリみたいに戻り値で分岐させる方が楽だったなという感が拭えなくて。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/27
28: デフォルトの名無しさん [sage] 2025/05/10(土) 13:31:23.16 ID:J+Qfv1kZ バージョン上げるとちょこちょこエラーになる… http://mevius.5ch.net/test/read.cgi/tech/1737771850/28
29: デフォルトの名無しさん [sage] 2025/07/30(水) 13:42:31.22 ID:9cD2Qfoh 1か月くらい前に1.0アルファ版が出ていたのね。ちょっと触る時間がないんだけど、結構再設計されている部分があるみたい。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/29
30: デフォルトの名無しさん [sage] 2025/07/30(水) 14:00:29.27 ID:Meqfu9qd リアクティブプログラミングスタイルの記述が気になっているけど触っていない http://mevius.5ch.net/test/read.cgi/tech/1737771850/30
31: デフォルトの名無しさん [sage] 2025/08/03(日) 21:32:11.70 ID:2B5I/jfB レイアウト系コントロールのcontrolsプロパティに、たとえばRowとCheckboxとLiptViewを突っ込むと、VSCodeのPylanceから「型"list[Row | Checkbox | ListView]"の引数を、関数"__init__"の型"list[Control]" のパラメーター"controls"に割り当てることはできません」って警告が出て鬱陶しいんだけど正攻法で抑止する方法って何かないかな。 Row, Checkbox, ListViewがControlの下位クラスってことを型チェッカーが把握してないってことだと思うんだけど。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/31
32: デフォルトの名無しさん [sage] 2025/08/04(月) 14:31:12.98 ID:IfdApRBS RowとCheckboxとListViewをすべてControlにcastすれば警告は抑止できるけど、さすがにそんなこといちいちやっていられないし。 たぶん何か簡単な方法があると思うんだけどなぁ。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/32
33: デフォルトの名無しさん [sage] 2025/08/04(月) 17:37:16.08 ID:QEghF0O/ 昔それなったことあるけど 今単純にColumnのcontrolsにRow, Checkbox, ListViewを突っ込んだだけだとでないな http://mevius.5ch.net/test/read.cgi/tech/1737771850/33
34: 31-32 [sage] 2025/08/04(月) 18:49:51.62 ID:IfdApRBS 原因は一応分かったかも。 中のコントロールにflet.Refで参照を張っているんだけどどうやら角括弧による型付きRefで参照を張ると警告が出るっぽい。単にft.Ref() にしたら警告が出なくなった。ただ、動作に問題がないかは要確認かな。何でそうなるのかもまだきちんとは分かってないし。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/34
35: デフォルトの名無しさん [sage] 2025/08/05(火) 16:12:27.14 ID:d07nDUZU ジェネリクスの共変とか反変とかの概念が関係あるみたいね、あまりよく分かってないが。基底型がBで派生型がDのとき、list[D]がlist[B]の派生型になるとは限らないとか何とか。本当は型理論とかまじめに勉強すべきなんだろうけど、それはちょっとしんどいなぁ……。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/35
36: デフォルトの名無しさん [sage] 2025/08/14(木) 22:21:20.82 ID:ZKu9lsh4 @data_viewにちょっと触ってみた。before_updateに色々突っ込まずに済むようになったみたいでそれ自体はいい感じ。 ただ、親コントロール.controls[インデックス] = 新コントロールという感じで更新するとき、インデックス(親コントロールの何番目の子要素か)をハードコーティングしたくないんだけど、あまりうまく行く方法が見つからなくて困り中。Refでやるのが普通かなと思ったんだけど、@data_viewはメモ化しているみたいで、キャッシュからコントロールが返されるときにうまくいかないみたい。 あまり触る時間もないので当面はハードコーティングで済ませて、ドキュメントが公開された後にあらためて検討することになりそう。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/36
37: デフォルトの名無しさん [sage] 2025/08/18(月) 15:46:09.26 ID:1pvPWxPY TextFieldを含むカスタムコントロールXと、その状態を保持するXStateクラスとを作ってControlBuilderでリアクティブに処理しようとする場合、とりあえずxにxstateへの参照を持たせて、TextFieldのon_changeの中で x.state.value = e.control.value みたいな感じにしているんだけど、こんな設計でいいのかな。これだと入力のたびにTextField(あるいはそれを含むカスタムコントロール全体?)が再生成されることになるんだけどリアクティブUIってそんなもの? あまり、他のフレームワークとか触ったことがないので勝手がよくわからない。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/37
38: デフォルトの名無しさん [sage] 2025/08/18(月) 18:58:19.77 ID:HwAf1a14 ControlBuilderで生成されるコントロールが持つメソッド(具体的にはfocus)の呼び出しって、どう書けばいいんだろ? controlsリストの最初の要素としてfocusを持つコントロールを生成して返すControlBuilderを置いた上で、他の場所でself.controls[0].focus って書いたら、「ControlBuilderはfocusという名前のメソッドを持ってない」と怒られたんだが。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/38
39: デフォルトの名無しさん [sage] 2025/08/21(木) 20:32:27.60 ID:NaAwv2o/ dev5066いれてみたけどControlBuilderどこだよ… http://mevius.5ch.net/test/read.cgi/tech/1737771850/39
40: デフォルトの名無しさん [sage] 2025/08/21(木) 20:33:03.13 ID:NaAwv2o/ dev5509だった http://mevius.5ch.net/test/read.cgi/tech/1737771850/40
41: デフォルトの名無しさん [sage] 2025/08/21(木) 20:48:06.07 ID:NaAwv2o/ 名前変わったのかよ http://mevius.5ch.net/test/read.cgi/tech/1737771850/41
42: デフォルトの名無しさん [sage] 2025/08/21(木) 21:11:43.38 ID:NaAwv2o/ >>38 ft.Refで参照したよ で、TextField.focus()だと非同期になってるからawaitいる http://mevius.5ch.net/test/read.cgi/tech/1737771850/42
43: デフォルトの名無しさん [sage] 2025/08/22(金) 09:05:36.13 ID:5NhjtIih ControlBuilderで返されるオブジェクトのrefプロパティに適宜のref名を設定して参照を張るという方法は、ControlBuilderに渡す状態オブジェクト変数が p → q → p …… というように同じ引数になる場合、同じ引数による2回目以降の呼び出しでは効かなくなるという問題がない? だから、ControlBuilderを使う場合にはrefは事実上、使えなくなったものだと思っていたんだが。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/43
44: デフォルトの名無しさん [sage] 2025/08/29(金) 16:32:10.87 ID:FvSDmdzS ControlBuilderをちょっと試してみたが、やっぱり少し重くなることがあるね。自分の書き方が悪いだけなのかもしれないけれど、そうでないとしたら使い所・使い方を選ぶ感じの機能なのかも。全面的にリアクティブUIにしたかったんだけど、これだとちょっと辛いかな。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/44
45: デフォルトの名無しさん [sage] 2025/08/30(土) 10:06:50.47 ID:U/OkkUQy >>38 妥当な方法か否かは分からないが、ControlBuilderの content属性からControlBuilderが生成したその戻り値オブジェクトにアクセスできるみたいね。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/45
46: デフォルトの名無しさん [sage] 2025/08/30(土) 12:26:49.50 ID:tdfvlCm8 直接value触ると怒られるな もうstateから触れってことか http://mevius.5ch.net/test/read.cgi/tech/1737771850/46
47: デフォルトの名無しさん [sage] 2025/08/31(日) 22:30:51.48 ID:OfdewdYG >>45 ControlBuilderのcontent属性にセットされるのは一回updateされた後っぽい。それまではNone http://mevius.5ch.net/test/read.cgi/tech/1737771850/47
48: デフォルトの名無しさん [sage] 2025/09/01(月) 15:53:48.33 ID: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が使えないのだとすると非常に不便なので何か回避法がありそうではあるが……。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/48
49: デフォルトの名無しさん [sage] 2025/09/07(日) 12:43:28.89 ID:TqDkjIbM あれ、現時点でインストールするとControlBuilderが見つからないってなるな。>>39-41と同じ状態? http://mevius.5ch.net/test/read.cgi/tech/1737771850/49
50: デフォルトの名無しさん [sage] 2025/09/07(日) 14:09:29.85 ID:TqDkjIbM StateViewという名前になったのか。こういう変更ってどこかに書いてあったのかな? アルファ版だから、どこにも書いてなかったとしても文句は言えないが。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/50
51: デフォルトの名無しさん [sage] 2025/09/07(日) 23:17:20.34 ID:TC5o/1J8 >>48 4点目だけど、描画更新・再描画が行われるのは、第1引数stateの内容変更があったときではなく、第1引数stateの子孫属性に対する代入があったときというのが正確みたいね(元と同じ値を代入したときも描画更新・再描画は行われるみたい)。noteで解説記事を書いている人によると、__set_attr__をフックしているらしい。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/51
52: デフォルトの名無しさん [] 2025/09/07(日) 23:55:55.13 ID:wN29kMQ7 せっかくupdateいらなくなるのに asyncio.sleepがいるってどうなん…… http://mevius.5ch.net/test/read.cgi/tech/1737771850/52
53: デフォルトの名無しさん [sage] 2025/09/08(月) 00:22:50.28 ID:i1Wv6LLA まぁ、ダイアログ等限定の話なら我慢できるかな。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/53
54: デフォルトの名無しさん [sage] 2025/09/08(月) 17:54:12.61 ID:PGku9TnQ page.run_taskでstate変更しても反映しないな http://mevius.5ch.net/test/read.cgi/tech/1737771850/54
55: デフォルトの名無しさん [sage] 2025/09/09(火) 22:58:43.69 ID:zANAfy0I タブ周りも結構変わっているのね。Tabsのcontentに(Columnでまとめた)TabBarとTabBarViewを入れるってことでいいの……か? http://mevius.5ch.net/test/read.cgi/tech/1737771850/55
56: デフォルトの名無しさん [sage] 2025/09/10(水) 21:27:09.31 ID:Rtl+OmsU >>48 最後の点だけど、もうRefを使っても問題ないみたい。修正された? 生成後に部分的な状態変更を必要とするようなカスタムコントロールは、StateViewでは使えないことになるのね。基本的にカスタムコントロールで凝ったことをするのは想定してないってことなのか。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/56
57: デフォルトの名無しさん [sage] 2025/09/11(木) 10:40:51.92 ID:ZLHIwsaj アルファ版のうちにということだろうけど、ここぞとばかりに色々弄っているな。たしかにこの先破壊的変更は入れづらくなっていくんだろうから、ここでいろいろやっておくのは良いことなんだろうね。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/57
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.016s