PySide超入門【第13回】UIを視覚的に整理!QGroupBoxとQFrameの使い方徹底解説

\ 迷ったらまずTechAcademyの無料カウンセリング! /

GUIが複雑になってくると、情報を整理してグルーピングすることが重要になります。そんなときに便利なのが QGroupBoxQFrame です。

  • 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メソッド / プロパティ説明
1setTitle(text)グループボックスのラベルを設定group.setTitle(“表示設定”)
2title()ラベルを取得group.title()
3setCheckable(bool)チェックボックス付きにするgroup.setCheckable(True)
4setChecked(bool)チェック状態を変更group.setChecked(False)
5isChecked()チェック状態を取得group.isChecked()

QFrame

Noメソッド / プロパティ説明
6setFrameShape(shape)枠の形状を設定(Box, HLine, VLine, etc.)frame.setFrameShape(QFrame.Box)
7setFrameShadow(shadow)枠の立体感(Raised, Sunken, Plain)を設定frame.setFrameShadow(QFrame.Sunken)
8setLineWidth(width)枠線の幅を設定frame.setLineWidth(2)
9setMidLineWidth(width)枠の内側の線の幅(立体感用)を設定frame.setMidLineWidth(1)
10frameShape()現在の枠の形状を取得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.WinPanelWindows風パネル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を整理するために非常に有用です。それぞれをうまく使い分けることで、ユーザーにとってわかりやすく美しいインターフェースを作ることができます。

次回は、アプリの操作性を高めるための QMenuBarQToolBar の使い方を解説します。

シェアしてくださると嬉しいです!
  • URLをコピーしました!

コメント

コメントする

目次