Skip to main content

QMainwindowのStatusBarを使う

今回は基本 Widget「StatusBar のの使い方について。

StatusBar とは QMainwindow に追加することができる(QDialog ではない)Widget で Window の下のほうにメッセージや Widget を追加することが出来る Widget です。 (Widget というより Layout に近い)

使い方

まず全体サンプル。

# -*- coding: utf-8 -*-

import sys

from PySide2.QtWidgets import (QApplication,
QMainWindow,
QStatusBar,
QProgressBar,
QSizePolicy,
QPushButton)
from PySide2.QtCore import (Qt)


class UISample(QMainWindow):

def __init__(self, parent=None):

super().__init__(parent)

self.status = QStatusBar()
self.setStatusBar(self.status)

self.progress = QProgressBar()
# 幅を固定する
self.progress.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred)
self.progress.setMinimumWidth(200)

self.progress.setMinimum(0)
self.progress.setMaximum(100)
self.progress.setValue(50)
self.status.addPermanentWidget(self.progress)

self.resize(600, 400)

# self.button = QPushButton("PUSH")
# self.status.addWidget(self.button)

self.showMessage("Hogehoge Fugafuga")

def showMessage(self, message):
self.status.showMessage(message)


if __name__ == '__main__':
app = QApplication(sys.argv)
QApplication.setFallbackSessionManagementEnabled(True)
a = UISample()
a.show()
sys.exit(app.exec_())

Window に StatusBar を追加する

        self.status = QStatusBar()
self.setStatusBar(self.status)

まず、追加するにはこの2行で完了です。 StatusBar は他の Widget とは違い QMainwindow の setStatusBar で追加します。

あとは、 self.status.showMessage("表示したいメッセージ") で、 StatusBar にメッセージを表示することができます。

ProgressBar を追加する

StatusBar には、任意の Widget を追加することが出来ます。 これを利用して、StatusBar を表示させたり出来ます。

        self.progress = QProgressBar()
# 幅を固定する
self.progress.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred)
self.progress.setMinimumWidth(200)

self.progress.setMinimum(0)
self.progress.setMaximum(100)
self.progress.setValue(50)
self.status.addPermanentWidget(self.progress)

追加方法は、まず Widget を追加して addPermanentWidget で追加します。 この方法で追加すると、右寄せで Widget が追加されます。 幅調整や、ProgressBa の設定は 通常の ProgressBar と同じく使えば OK です。 addPermanentWidget の存在を調べるのにかなりはまった

このように、他の Widget でも OK です。

self.status.addWidget(self.button)

addPermanentWidget ではなく addWidget もありますが、この場合は左寄せになり StatusBar の Message に覆い被さるように Widget が追加されます。 なので、Message ではなく、QLabel を addWidget で追加して メッセージ表示をカスタマイズさせることなども可能です。