На этом шаге мы рассмотрим назначение, иерархию наследования, форматы конструктора и основные методы этого класса, а также небольшой пример создания строки состояния.
Класс QStatusBar реализует строку состояния, в которой можно выводить различные сообщения. Помимо текстовой информации, туда можно добавить различные компоненты,- например, индикатор хода выполнения процесса. Строка состояния состоит из трех секций:
Получить ссылку на строку состояния, установленную в главном окне, позволяет метод statusBar() класса QMainWindow, а установить пользовательскую панель вместо стандартной можно с помощью метода setstatusBar(<QStatusBar>). Иерархия наследования для класса QStatusBar выглядит так:
(QObject, QPaintDevice) - QWidget - QStatusBar
Формат конструктора класса QStatusBar:
<Объект> = QStatusBar([parent=None])
В параметре parent указывается ссылка на родительское окно.
Класс QStatusBar наследует все методы базовых классов и поддерживает следующие дополнительные методы (здесь приведены только основные - полный их список доступен на странице https://doc.qt.io/qt-5/qstatusbar.html):
Класс QStatusBar поддерживает сигнал messageChanged(<Сообщение>), генерируемый при изменении текста во временной секции. Внутри обработчика через параметр доступно новое сообщение или пустая строка.
В заключение дополним пример из 280 шага созданием и отображением строки состояния. Она сожержит постоянную секцию, в которую выводится строка "Hello!". В секцию временных сообщений выводятся координаты курсора мыши, когда мышь перемещается на форме (не забудьте нажать клавишу мыши!).
# -*- coding: utf-8 -*- import sys from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication, QLabel from PyQt5.QtGui import QIcon class Example(QMainWindow): def __init__(self): super().__init__() self.X = 0 self.Y = 0 self.initUI() def mouseMoveEvent(self, e): # Получение текущих координат мыши # Не забудьте нажать кнопку мыши! s = 'X = ' + str(e.x()) + ', Y = ' + str(e.y()) # Вывод их в секцию временных сообщений self.statusBar().showMessage(s) def initUI(self): exitAction = QAction(QIcon('exit.png'), '&Exit', self) exitAction.setShortcut('Ctrl+Q') exitAction.triggered.connect(qApp.quit) menubar = self.menuBar() fileMenu = menubar.addMenu('&File') fileMenu.addAction(exitAction) # ======= Добавили панель инструментов toolbar = self.addToolBar('Exit') toolbar.addAction(exitAction) # ======= Завершение добавления # ======= Добавили строку состояния stBar = self.statusBar() lb = QLabel('Hello!') # Выводит виджет в постоянную секцию stBar.insertPermanentWidget(0, lb) # ======= Завершение добавления self.setGeometry(300, 300, 300, 200) self.setWindowTitle('Menubar, Toolbar & Statusbar') self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Example() sys.exit(app.exec_())
Результат работы приложения показан на рисунке 1.
Рис.1. Результат работы приложения
Со следующего шага мы начнем рассматривать MDI-приложения.