\ 迷ったらまずTechAcademyの無料カウンセリング! /
PySide超入門【第13回】UIを視覚的に整理!QGroupBoxとQFrameの使い方徹底解説

GUIが複雑になってくると、情報を整理してグルーピングすることが重要になります。そんなときに便利なのが QGroupBox
と QFrame
です。
QGroupBox
は、ウィジェットのグループに枠とラベルをつけてまとめるためのコンテナQFrame
は、装飾や区切り線などを描画するための汎用コンテナ
これらを活用することで、視覚的にも論理的にも整ったレイアウトを構築できます。 特に設定画面や情報表示エリアで役立つコンポーネントです。
本記事では、それぞれの基本的な使い方とプロパティ・メソッドを徹底的に解説し、UIを視覚的に整理するコツをご紹介します。
QGroupBox / QFrameとは?
QGroupBox
は複数の関連するウィジェットをグループ化し、タイトル付きの枠で囲むことで視覚的・機能的なまとまりを提供します。 一方 QFrame
は、主に装飾や区切り線、囲い罫線の描画を目的とした軽量な汎用ウィジェットです。
以下の例では、それぞれの基本的な使い方を示します。
基本コード
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QGroupBox, QFrame, QLabel
import sys
app = QApplication(sys.argv)
window = QWidget()
layout = QVBoxLayout()
# QGroupBox の例
group = QGroupBox("設定")
group_layout = QVBoxLayout()
group_layout.addWidget(QLabel("オプション1"))
group_layout.addWidget(QLabel("オプション2"))
group.setLayout(group_layout)
#=========================================
#ここにQGroupBoxのコードを追加します
#=========================================
# QFrame の例
frame = QFrame()
frame.setFrameShape(QFrame.Box)
frame.setFrameShadow(QFrame.Sunken)
frame_layout = QVBoxLayout()
frame_layout.addWidget(QLabel("情報エリア"))
frame.setLayout(frame_layout)
#=========================================
#ここにQFrameのコードを追加します
#=========================================
layout.addWidget(group)
layout.addWidget(frame)
window.setLayout(layout)
window.setWindowTitle("QGroupBoxとQFrame")
window.show()
sys.exit(app.exec())

主なプロパティとメソッド一覧(全解説)
QGroupBox
No | メソッド / プロパティ | 説明 | 例 |
---|---|---|---|
1 | setTitle(text) | グループボックスのラベルを設定 | group.setTitle(“表示設定”) |
2 | title() | ラベルを取得 | group.title() |
3 | setCheckable(bool) | チェックボックス付きにする | group.setCheckable(True) |
4 | setChecked(bool) | チェック状態を変更 | group.setChecked(False) |
5 | isChecked() | チェック状態を取得 | group.isChecked() |
QFrame
No | メソッド / プロパティ | 説明 | 例 |
---|---|---|---|
6 | setFrameShape(shape) | 枠の形状を設定(Box, HLine, VLine, etc.) | frame.setFrameShape(QFrame.Box) |
7 | setFrameShadow(shadow) | 枠の立体感(Raised, Sunken, Plain)を設定 | frame.setFrameShadow(QFrame.Sunken) |
8 | setLineWidth(width) | 枠線の幅を設定 | frame.setLineWidth(2) |
9 | setMidLineWidth(width) | 枠の内側の線の幅(立体感用)を設定 | frame.setMidLineWidth(1) |
10 | frameShape() | 現在の枠の形状を取得 | frame.frameShape() |
各プロパティ・メソッド 詳細解説
【1】グループボックスのラベル
- 概要:グループボックスのラベルを設定します。
- メソッド:setTitle(text)
- 使い方:
group.setTitle("グループボックスのラベル設定")

【2】ラベルを取得
- 概要:ラベルを取得します。
- メソッド:title()
- 使い方:
label = group.title()
print(label)
# グループボックスのラベル設定
【3】チェックボックスを追加
- 概要:ボックスのタイトル部にチェックボックスを付けられます。
- メソッド:setCheckable(bool)
- 使い方:
group.setCheckable(True)

【4】チェック状態を変更
- 概要:チェック状態をプログラムから変更します。
- メソッド:setChecked(bool)
- 使い方:
group.setChecked(False)

【5】チェック状態を取得
- 概要:現在のチェック状態を取得します。
- メソッド:isChecked()
- 使い方:
state = group.isChecked()
print(state)
# False
【6】枠の形状を指定
- 概要:枠の形状を指定できます(Box、HLineなど)。
- メソッド:setFrameShape(shape)
定数名 | 表示内容 | 説明 |
---|---|---|
QFrame.NoFrame | 枠なし | 枠を表示しません(デフォルト状態) |
QFrame.Box | 四角形の枠 | 全辺に囲み線を表示します(ボックス型) |
QFrame.Panel | パネル枠 | 窪んだようなパネル枠を表示(Raised/Sunken と組み合わせて使用) |
QFrame.WinPanel | Windows風パネル | Windows風のパネル外観を描画(非推奨) |
QFrame.HLine | 横線 | 横方向の1本線(区切り線などに) |
QFrame.VLine | 縦線 | 縦方向の1本線(区切り線などに) |
QFrame.StyledPanel | スタイル枠 | スタイルシートに従った枠線を描画(モダンなUIに適) |
- 使い方:
frame.setFrameShape(QFrame.Panel)

【7】枠の立体的な描写
- 概要:枠の立体的な描写(沈んで見える、浮き上がって見える)を指定します。
- メソッド:setFrameShadow(shadow)
Shadow設定 | 見た目の印象 | 適した用途 |
---|---|---|
Plain | フラット、線だけ | シンプルな区切り枠 |
Raised | 浮き上がって見える | ボタン・パネル・強調エリア |
Sunken | 凹んで見える(押された) | 入力欄・パネル・装飾 |
- 使い方:
frame.setFrameShadow(QFrame.Raised)

【8】枠の幅
- 概要:枠の幅を設定します。
- メソッド:setLineWidth(width)
- 使い方:
frame.setLineWidth(2)

【9】枠線の内側の幅
- 概要:立体的な枠線の内側の幅を設定します。
- メソッド:setMidLineWidth(width)
- 使い方:
frame.setMidLineWidth(1)

【10】枠の形状を取得
- 概要:現在設定されている枠の形状を取得します。
- メソッド:frameShape()
- 使い方:
shape = frame.frameShape()
print(shape)
# 2
よくある質問(FAQ)
- Q1. QGroupBox の中にレイアウトは必須?
-
A. はい。
setLayout()
を使ってレイアウトを設定しないと子ウィジェットが正しく表示されません。 - Q2. QGroupBox のチェックボックスの状態はどう制御できますか?
-
A.
setCheckable(True)
とsetChecked(bool)
/isChecked()
で制御できます。 - Q3. QFrame と QLabel を組み合わせて装飾付きの表示はできますか?
-
A. 可能です。ラベルを
QFrame
に入れて枠と影を設定すると区切り付きの情報表示になります。 - Q4. QFrame の種類は他にどんな形状がありますか?
-
A.
QFrame.HLine
,VLine
,StyledPanel
,NoFrame
などがあります。 - Q5. グループ化せずに QFrame だけで囲いを作るのはアリ?
-
A. 装飾目的であれば問題ありませんが、意味的なグループ分けには
QGroupBox
を使うのが推奨です。
まとめ
QGroupBox
はウィジェットを論理的にグルーピングするために、QFrame
は視覚的にUIを整理するために非常に有用です。それぞれをうまく使い分けることで、ユーザーにとってわかりやすく美しいインターフェースを作ることができます。
次回は、アプリの操作性を高めるための QMenuBar
と QToolBar
の使い方を解説します。
コメント