PySide超入門【第15回】通知とメッセージ表示!QStatusBarとQMessageBoxの徹底解説

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

アプリケーションの使いやすさを向上させるためには、ユーザーに対する「適切な通知」や「状態の可視化」が不可欠です。

QStatusBar は、画面下部に常時表示されるステータス情報領域を提供し、現在の処理内容やヒントなどを表示できます。
QMessageBox は、エラーや確認、情報提示といったポップアップダイアログを簡単に表示できるウィジェットです。

本記事では、この2つの通知系ウィジェットの基本的な使い方から、実用的な活用方法までを詳しく解説します。

目次

QStatusBar / QMessageBoxとは?

QStatusBar
ウィンドウの下部に配置される情報表示領域で、ユーザーに対して処理の状態やヒントを非侵入的に表示するために使用されます。通常、QMainWindowstatusBar() メソッドを使って取得・操作します。

QMessageBox
アプリ内で警告や確認、エラーメッセージなどをポップアップ表示するためのダイアログクラスです。information()warning()critical()question() などの便利なクラスメソッドが用意されており、用途に応じた対話を簡単に実装できます。

基本コード

from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QMessageBox
import sys

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QStatusBarとQMessageBox")

        # ステータスバー作成
        self.statusBar().showMessage("準備完了")

        # ボタン作成
        button = QPushButton("警告を表示")
        button.clicked.connect(self.show_warning)
        self.setCentralWidget(button)

    def show_warning(self):
        QMessageBox.warning(self, "警告", "これは警告メッセージです")
        self.statusBar().showMessage("警告を表示しました", 3000)

app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
QStatusBarQMessageBox

主なプロパティとメソッド一覧(全解説)

QStatusBar

Noメソッド / プロパティ説明
1showMessage(str, timeout=0)メッセージを表示。timeoutで自動消去設定可statusBar().showMessage(“保存完了”, 3000)
2clearMessage()表示中のメッセージを消去statusBar().clearMessage()
3currentMessage()現在表示中のメッセージを取得statusBar().currentMessage()
4addPermanentWidget(widget)ステータスバーに右側にウィジェットを追加statusBar().addPermanentWidget(QLabel(“右側”))

QMessageBox(クラスメソッド)

Noメソッド / プロパティ説明
5information(parent, title, message)情報メッセージ表示QMessageBox.information(self, “情報”, “完了しました”)
6warning(parent, title, message)警告メッセージ表示QMessageBox.warning(self, “警告”, “エラーが発生”)
7critical(parent, title, message)重大エラーメッセージ表示QMessageBox.critical(self, “致命的”, “破損しました”)
8question(parent, title, message)ユーザーにYes/Noを確認QMessageBox.question(self, “確認”, “保存しますか?”)

各プロパティ・メソッド 詳細解説

【1】ステータスバーの文字列

  • 概要:ステータスバーに文字列を表示します。timeout(ミリ秒)を指定すると自動的に消えます。
  • メソッド:showMessage(str, timeout=0)
  • 使い方:
self.statusBar().showMessage("保存しました", 3000)

【2】ステータスメッセージを消去

  • 概要:現在表示中のステータスメッセージを消去します。
  • メソッド:clearMessage()
  • 使い方:
self.statusBar().clearMessage()

【3】ステータスメッセージを取得

  • 概要:現在表示されているステータスメッセージを取得します。
  • メソッド:currentMessage()
  • 使い方:
msg = self.statusBar().currentMessage()
print(msg)
# 準備完了

【4】ウィジェットを追加

  • 概要:ステータスバーの右端に、任意のウィジェット(例:時計や進捗)を追加できます。
  • メソッド:addPermanentWidget(widget)
  • 使い方:
from PySide6.QtWidgets import QLabel
label = QLabel("追加したラベル")
self.statusBar().addPermanentWidget(label)

【5】ポップアップダイアログ

  • 概要:情報用のポップアップダイアログを表示します。
  • メソッド:information()
  • 使い方:
QMessageBox.information(self, "完了", "保存が完了しました")

【6】警告メッセージ

  • 概要:警告(黄色三角マーク)付きのメッセージを表示します。
  • メソッド:warning()
  • 使い方:
QMessageBox.warning(self, "警告", "入力内容に誤りがあります")

【7】エラーダイヤログ

  • 概要:重大なエラーを表すダイアログ(赤バツ)を表示します。
  • メソッド:critical()
  • 使い方:
QMessageBox.critical(self, "致命的", "ファイルが破損しています")

【8】Yes/No ボタンダイアログ

  • 概要:Yes/No ボタン付きの確認ダイアログを表示します。戻り値を使って条件分岐が可能です。
  • メソッド:question()
  • 使い方:
reply = QMessageBox.question(self, "確認", "上書きしますか?")
if reply == QMessageBox.Yes:
    print("Yesが選ばれました")
if reply == QMessageBox.No:
    print("Noが選ばれました")

よくある質問(FAQ)

ステータスバーの右端にテキストを表示できますか?

addPermanentWidget() を使うと右寄せで常時表示できます。

ステータスバーの高さやフォントを変えたいです

setStyleSheet() でカスタマイズできます。

self.statusBar().setStyleSheet("font-weight: bold; height: 24px")
QMessageBox で Yes/No 以外のボタンを出せますか?

setStandardButtons() を使えばカスタム可能です。

QMessageBox に詳細説明を追加できますか?

setDetailedText() を使って、折りたたみ式の補足情報を追加できます。

box = QMessageBox()
box.setText("エラーが発生しました")
box.setDetailedText("Traceback...詳細")
box.exec()
QMessageBox にアイコンをカスタマイズできますか?

setIconPixmap() を使うことで独自アイコンに変更可能です。

まとめ

本記事では、PySide6 における QStatusBarQMessageBox の基本的な使い方について解説しました。

  • QStatusBar は、アプリケーションの下部に状態情報を表示する便利なウィジェットです。showMessage() による一時表示や、addWidget() / addPermanentWidget() によるウィジェット追加が可能です。
  • QMessageBox は、ユーザーに対して情報、警告、エラーなどのメッセージをダイアログ形式で伝えるために使用されます。information()warning()critical()question() などの関数で用途ごとに使い分けます。

ユーザーとの情報のやり取りを適切に行うことで、アプリケーションの使い勝手が大きく向上します。今回の内容を踏まえて、より丁寧なインターフェース設計を心がけてみてください。

次回は、QDialogとQFileDialogの使い方徹底解説(ダイアログ活用法) をお届けします。

ファイル選択ダイアログや設定ウィンドウなど、ユーザーと対話するための「ダイアログ」は GUI アプリに不可欠な要素です。次回は、QDialog の基本から、exec()open() の違い、さらには QFileDialog を使った実用的なファイル選択まで、実践的に解説します。

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

コメント

コメントする

目次