Шаг 280.
Библиотека PyQt5.
Создание SDI- и MDI-приложений. Панели инструментов. Класс QToolButton

    На этом шаге мы рассмотрим назначение, иерархию наследования, форматы конструктора и основные методы этого класса, а также небольшой пример создания панелей инструментов.

    При добавлении действия на панель инструментов автоматически создается кнопка, представляемая классом QToolButton. Получить ссылку на кнопку позволяет метод widgetForAction() класса QToolBar. Иерархия наследования для класса QToolButton выглядит так:

 (QObject, QPaintDevice) - QWidget - QAbstractButton - QToolButton

    Конструктор класса QToolButton имеет следующий формат:

  <Объект> = QToolButton([parent=None])

    В параметре parent указывается ссылка на родительский компонент.

    Класс QToolButton, помимо методов базовых классов, поддерживает следующие методы (здесь приведены только основные - полный их список доступен на странице https://doc.qt.io/qt-5/qtoolbutton.html):

    Класс QToolButton поддерживает сигнал triggered(<QAction>), который генерируется при нажатии кнопки или комбинации клавиш, а также при выборе пункта в связанном меню. Внутри обработчика через параметр доступно соответствующее действие.

    В заключение приведем небольшой пример создания и использования панели инструментов. Добавим в приложение из 274 шага панель инструментов (добавленные строки выделены комментариями):

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon


class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()


    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)
        # ======= Завершение добавления


        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Menubar & Toolbar')
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
Архив с файлами можно взять здесь.

    Результат работы приложения показан на рисунке 1.


Рис.1. Результат работы приложения

    На следующем шаге мы рассмотрим прикрепляемые панели.




Предыдущий шаг Содержание Следующий шаг