Metasequoia BBS

| 新規投稿 | 通常表示 | ツリー表示 |
状態
タグ
キーワード
[8468] Pythonスクリプトの質問 / まじかる☆しげぽん
[質問] 返信
■ダイアログサイズの再設定
ウェジエットの共通設定で、visibleプロパティで表示非表示をコントロールすることができますがvisibleにしたときにUIが詰まりますがそれに合わせてウィンドウサイズをその状態に、最適化した状態にするにはどのように記述すればよいでしょうか?
現状、heightを決め打ちで指定してみたのですが環境設定でUIサイズを変更するとおかしくなってしまいます。

■ListBoxでvertLayoutでfillを使った時に正しく動作しない
WindowBaseでcanResizeをTrueにしてる場合、horzLayoutでfillを使った場合ウィンドウサイズに引き伸ばされるのですが、縦に引き伸ばしたときにvisibleRowで行数を指定しているからか縦方向には幅いっぱい広がってくれません。
対策として現状の仕様で考えれるのは、縦方向のサイズを取得してその分visibleRowの行数を増やしていくというのが考えれますが、あまりスマートな方法ではないのでvertLayoutのfillが正しく反映される方法はあるでしょうか?
2019-12-09 16:46
[8469] Re: Pythonスクリプトの質問 / まじかる☆しげぽん
>■ListBoxでvertLayoutでfillを使った時に正しく動作しない
分かりやすいのがありました、材質のリストボックスはウィンドウの上下に合わせてちゃんと縦の幅に合わせて変化しているのですが、Pythonスクリプトのウィジエットでこれと同様のことを実現するにはどのようにすればいいでしょうか

https://imgur.com/a/tPNZlYG
2019-12-09 17:33
[8470] Re: Pythonスクリプトの質問 / まじかる☆しげぽん
こちらの問題、両方ともフレームにfillを設定することで解決しました。
フレームを使っていない場合、子ウィジェットのfillを設定するだけで大丈夫でしたがframeを使っていると高さが一定のサイズで固定されているようでした。

以下を1行追加するだけで解決しました。
 self.frame.vertLayout = "fill"

同時に、ダイアログサイズの再設定の方もダイアログサイズそのものは変化しませんがvisibleで消えた分、Listのfillが有効になり問題が解決しました。

https://imgur.com/a/XC2Q358

対応不要タグを付けていただいて大丈夫です
2019-12-09 19:34
[8471] Re: Pythonスクリプトの質問 / 管理者
>■ダイアログサイズの再設定
ダイアログがselfとして
size=self.getJustSize(-1,-1)
self.width=size[0]
self.height=size[1]
のようにgetJustSizeで取得してリサイズしてください。

>■ListBoxでvertLayoutでfillを使った時に正しく動作しない
リストのvertLayoutにfillを指定をしても、リストがフレームなどの中にある場合はその親フレームのvertLayoutにもfillを指定しないと引き伸ばされません。
おそらくこちらだと思いますので、確認してみてください。
visibleRowはgetJustSizeで取得されるサイズに影響しますが、リストが生成された後にフィル処理などでリサイズされる際には影響しません。
2019-12-09 19:36
[8472] Re: Pythonスクリプトの質問 / 管理者
投稿直前に自己解決されていたようですね。
凝ったレイアウトにする場合は返信で付けた内容も知っておくと迷わなくなります。
2019-12-09 19:39
[8473] Re: Pythonスクリプトの質問 / まじかる☆しげぽん
ダイアログサイズ、visibleRowは生成後に影響されないのは分かってよかったです。
左右にしか伸ばせなかったのが自由に変形できるようになりました。
丁寧にご返答ありがとうございます。
2019-12-09 19:56