PySide6: QToolbar

Python
PySide6
Autor:in

Johannes Kaisinger

Veröffentlichungsdatum

8. Januar 2023

In diesem Blogeintrag wollen wir die QToolBar studieren. Die Toolbar ist der meistgenutzte Weg, um Applikationsprogramme zu gestalten und viel genutzte Funktionalität dem Benutzer zur Verfügung zu stellen.

QToolBar

Der QToolBar können Buttons angefügt werden. Diese können wieder Aktionen zugeordnet werden. Das Verwenden von Icons für die Toolbar ist die gängigere Gestaltungsart.

import sys

from PySide6.QtCore import Qt
from PySide6.QtGui import QAction, QKeySequence, QIcon
from PySide6.QtWidgets import QApplication, QMainWindow, QLabel, QToolBar

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        
        self.setMinimumSize(500, 250)
        self.setWindowTitle("Cybernetics")

        # Main menu bar
        self.menu = self.menuBar()
        self.menu_file = self.menu.addMenu("&File")
        exit = QAction("&Exit", self, triggered=QApplication.quit)
        self.menu_file.addAction(exit)

        self.menu_edit = self.menu.addMenu("&Edit")
        undo = QAction("&undo", self, triggered=self.print_undo)
        redo = QAction("&redo", self, triggered=self.print_redo)
        self.menu_edit.addAction(undo)
        self.menu_edit.addAction(redo)

        self.menu_view = self.menu.addMenu("&View")
        appearence = QAction("&Search", self, triggered=None)
        self.menu_view.addAction(appearence)

        self.menu_help = self.menu.addMenu("&Help")
        about = QAction("&About Qt", self, shortcut = QKeySequence(QKeySequence.HelpContents), triggered=QApplication.aboutQt)
        self.menu_help.addAction(about)

        # toolbar
        toolbar = QToolBar("Toolbar")
        self.addToolBar(toolbar)

        tb_button_action1 = QAction("Add", self)
        tb_button_action1.setStatusTip("This adds someting.")
        tb_button_action1.triggered.connect(self.onDummyClick)
        tb_button_action2 = QAction("Copy", self)
        tb_button_action2.setStatusTip("This copies something.")
        tb_button_action2.triggered.connect(self.onDummyClick)
        tb_button_action3 = QAction(QIcon("folder.png"),"Open button", self)
        tb_button_action3.setStatusTip("This opens a folder dialog.")
        tb_button_action3.triggered.connect(self.onDummyClick)
        tb_button_action4 = QAction(QIcon("search.png"),"Search button", self)
        tb_button_action4.setStatusTip("This opens a search.")
        tb_button_action4.triggered.connect(self.onDummyClick)
        toolbar.addAction(tb_button_action1)
        toolbar.addAction(tb_button_action2)
        toolbar.addAction(tb_button_action3)
        toolbar.addAction(tb_button_action4)

        # label
        l1 = QLabel()
        l1.setText("Hello Cybernetics!")
        l1.setAlignment(Qt.AlignCenter)

        self.setCentralWidget(l1)

    def print_undo(self):
        print(f"undo")

    def print_redo(self):
        print(f"redo")

    def onDummyClick(self, s):
        print("On click: ", s)

if __name__ == "__main__":
    app = QApplication(sys.argv)

    window = MainWindow()
    window.show()

    app.exec()

Das Ergebnis sieht dann wie folgt aus.

QToolBar

Für die Icons müssen die jeweiligen Bilder zur Verfügung stehen. Toolbars mit Icons sind wohl der meist genutzte Weg, um die meistgenutzten Funktionalitäten zur Verfügung zu stellen. Viele Anwendungsprogramme wie beispielsweise Office-Programme oder CAD-Programme verwenden Icon-basierte Toolbars auf einer breiten Basis.

Fazit

Die Verwendung des Widgets QToolbar stellt sich als sehr einfach heraus.

Referenzen