みやたくワークスの徒然ブログ

みやたくワークスの徒然ブログ

PR

×

Profile

たくぷれっさ2号機

たくぷれっさ2号機

Calendar

Archives

2026.05
2026.04
2026.03
2026.02
2026.01
2023.11.25
XML
テーマ: ネット詐欺(21)
カテゴリ: Python


PySide で横レイアウトと縦レイアウトを併用して、いい感じに WidgetをQMainWindow内に表示しようとしたがうまくいかなかった話。

タブ画面にQLabelとQLineEditを横に慣れて、かつそれを複数行に跨りたかったが、そもそも全く画面上に何も表示されなかった。

解決方法だけ書くと、親Widgetを1つ作り、そいつをまず setCentralWidget でQMainWindowに追加し、その親WidgetにQHBoxLayoutを追加していく形で解決できた。

↓のソースコードは中途半端だけど、一旦最低限やりたいことはできるようになったバージョン。



class RequestTabContents ( QMainWindow ):
# コンストラクタ
def __init__ ( self ):
super (). __init__ ()

mainWidget = QWidget ()

# 縦方向のレイアウトを作成
vlayout = QVBoxLayout ( mainWidget )
# mainWidgetを中央に配置
self . setCentralWidget ( mainWidget ) ​ ← これをやっていないことが原因だった​
self . layout = vlayout

# mainWidgetにサブWidgetを追加していく

# 1行目のレイアウトを作成
hlayout1 = QHBoxLayout ()

# URLの見出しとURLの表示
lblURL = QLabel ( 'URL:' )
self . leURL = QLineEdit ()

hlayout1 . addWidget ( lblURL )
hlayout1 . addWidget ( self . leURL )

# 1行目のレイアウトを作成
hlayout2 = QHBoxLayout ()

# headerの見出しの表示
lblHeader = QLabel ( 'Header:' )
self . leHeaders = QLineEdit ()

hlayout2 . addWidget ( lblHeader )
hlayout2 . addWidget ( self . leHeaders )
# vlayout に横レイアウトを追加していく
vlayout . addLayout ( hlayout1 , 2 )
vlayout . addLayout ( hlayout2 , 8 )



た・だ・し、本来であれば leHeader をもっと幅広に表示したいのだが、1行分の高さしか持てていない。
解決次第、当ブログ修正予定。





ハマり時間 3hくらい(いまのところ)。





お気に入りの記事を「いいね!」で応援しよう

Last updated  2025.04.16 20:16:36
コメントを書く
[Python] カテゴリの最新記事


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Design a Mobile Website
スマートフォン版を閲覧 | PC版を閲覧
Share by: