【GUI】Fletスレ【Python/Flutter】 (69レス)
【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
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
58: デフォルトの名無しさん [sage] 2025/09/18(木) 08:09:43.17 ID:6zvJPGqA 明示的にupdateを書くことが(基本的には)なくなるということは、is_updateでTrueを返すようにするということは(基本的には)もうないってことでいいのかな。 ft.context.pageでどこからでもPageにアクセスできるのは地味にありがたい。カスタムコントロールの__init__の中でself.page.hogeとやって「Noneにhogeという属性はありません」と怒られるミスはよくやってしまっていたので。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/58
59: デフォルトの名無しさん [sage] 2025/09/18(木) 13:05:21.93 ID:DPWCUt9/ ごめん、is_updateじゃない、is_isolated だ。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/59
60: デフォルトの名無しさん [sage] 2025/09/18(木) 19:18:38.40 ID:t2Gbg0/Z 1.0当分かかりそうか http://mevius.5ch.net/test/read.cgi/tech/1737771850/60
61: デフォルトの名無しさん [sage] 2025/09/20(土) 09:50:21.54 ID:kxS+pQnh いまアルファ版(0.7)で、これからベータ版(0.8)→RC版(0.9)を経て1.0 だもんね。noteの解説記事を書いている人によれば、年内くらいじゃないかという見立てのようだけど、どうなんだろうね。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/61
62: デフォルトの名無しさん [sage] 2025/10/06(月) 15:14:18.20 ID:QPH3iO32 focus_stopみたいな名前のプロパティでも作って、コントロールへの入力完了後に次の(フォーカスを受け取る)コントロールに自動的にフォーカスが移るようにしてくれないかなぁ……。デスクトップアリでこれがないのは流石にちょっと使いにくいので自分で書いてみたけど結構面倒くさいし、これくらいはライブラリ側に期待しても罰は当たらないと思うんだよね。 autofocusがそういうプロパティかと思っていたんだけど、アレ全然役に立たないのな。何のためにあるんだレベル。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/62
63: デフォルトの名無しさん [sage] 2025/10/07(火) 18:17:13.86 ID:nb9VcTS1 コンテキストメニュー(右クリックメニュー)の機能も欲しいかな。ウェブの解説記事を参考にしてGestureDetector と Stack でそれっぽいものを作るところまではできたんだけど、メニュー以外のところをクリックしたときにメニューの表示を消すというのを簡単にする方法がわからなくて断念した。 何かしら方法はあるんだろうけど、コンテキストメニューくらいは簡単にかけるようになっていると嬉しいかな。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/63
64: デフォルトの名無しさん [sage] 2025/10/08(水) 11:38:45.62 ID:5PMf8mIp >>63 大きさ0のTextField をStackの奥側に置いておいて、そのon_blurイベントでStack を削除するようにすればそれっぽい感じにできるっぽい。 でもやっぱりもう少しちゃんとした方法が欲しいところだなー。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/64
65: デフォルトの名無しさん [sage] 2025/10/09(木) 19:27:41.53 ID:V7lTVJBy StateViewも何か別のコンセプトに置き換わるみたい。アルファ版ということもあってか、思った以上に流動的なんだね。いじったり、勉強したりするのは1.0が出てからにした方がいいのかも。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/65
66: デフォルトの名無しさん [] 2025/10/16(木) 12:22:09.70 ID:S5H+CbkM 触るのやめたよ http://mevius.5ch.net/test/read.cgi/tech/1737771850/66
67: デフォルトの名無しさん [sage] 2025/10/16(木) 13:59:41.30 ID:A2DLovH4 まー、本格的に触るのはもう少し仕様が安定してからでもいいかな感はあるかなぁ。正直、StateView(ControlBuilder)はメインコンセプトっぽいからさすがに変更されることはないだろうと甘く見ていたわ。たしかに新しいcomponentベースの宣言型UIの方が柔軟性は高そうではあるけれども。 ちょっとだけ触ってみたところ、状態変更が連鎖するコードだと「Set changed size during iteration」という実行時エラーで怒られるんだけど(__pending_updatesというset内の各コントロールをupdateしている最中に__pending_updates自体に追加等があったということっぽい)、何か対処法あるのかな。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/67
68: デフォルトの名無しさん [sage] 2025/10/17(金) 10:48:52.13 ID:NJK8gXIe 状態①の変更に伴い呼び出されるコンポーネント①のコードの中に、別の状態②の変更(それにより別のコンポーネント②のコードが呼び出される)があると67後半のエラーになるっぽい。これを許すとコントロールツリーの一貫性に問題が生じる事態が生じうるということなのかもしれない。 状態①の変更に伴い呼び出されるコンポーネント①のコードの中から別の状態②の変更を発生させるコードを一旦取り除いて、コンポーネント①の完了後にその処理を行うようにしたらエラーが出なくなった(常にこのような対応が可能かは別問題だけど)。 componentベースの宣言型UIという方向性は、個人的にはそんなに悪くない感触かな。仕様が安定するまでは触るのは程々にとどめておくけど。 http://mevius.5ch.net/test/read.cgi/tech/1737771850/68
69: デフォルトの名無しさん [sage] 2025/11/12(水) 19:13:41.90 ID:0pO79JLj しばらく更新みてなかったけど Reactみたいになるんか http://mevius.5ch.net/test/read.cgi/tech/1737771850/69
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.501s*