Einzelne Buttons in ToolBar positionieren (Left/Right)

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Nobuddy
User
Beiträge: 833
Registriert: Montag 30. Januar 2012, 16:38

Samstag 19. Januar 2019, 11:19

Hallo zusammen,

möchte bei meiner ToolBar, die ich unten horizontal erstellt habe, einen Teil der Buttons links und den anderen Teil rechts positionieren.
Ist das möglich und wenn ja, wie funktioniert das?

Poste hier mal den betreffenden Code dazu:

Code: Alles auswählen

    def toolbarBottom(self):

        exitAction = QtGui.QAction(
            QtGui.QIcon(icon_path + 'system-log-out'), 'Close', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.triggered.connect(self.close)
        maxAction = QtGui.QAction(
            QtGui.QIcon(icon_path + 'view-fullscreen.png'), 'Max', self)
        maxAction.setShortcut('Ctrl++')
        maxAction.triggered.connect(self.maximum_size)
        minAction = QtGui.QAction(
            QtGui.QIcon(icon_path + 'view-fullscreen.png'), 'Min', self)
        minAction.setShortcut('Ctrl+-')
        minAction.triggered.connect(self.minimum_size)
        editAction = QtGui.QAction(
            QtGui.QIcon(icon_path + 'edit-select-all.png'), 'Edit', self)
        editAction.setShortcut('Ctrl+E')
        editAction.triggered.connect(self.edit)
        newAction = QtGui.QAction(
            QtGui.QIcon(icon_path + 'document-new.png'), 'New', self)
        newAction.setShortcut('Ctrl+N')
        newAction.triggered.connect(self.new)

        self.Bottom = QtGui.QToolBar(self)
        self.Bottom.setToolButtonStyle(QtCore.Qt.ToolButtonTextBesideIcon)
        self.addToolBar(self.Bottom )
        self.Bottom.addAction(exitAction)
        self.Bottom.addAction(maxAction)
        self.Bottom.addAction(minAction)
        self.Bottom.addAction(editAction)
        self.Bottom.addAction(newAction)

        self.Bottom.setAllowedAreas(
            QtCore.Qt.TopToolBarArea
            | QtCore.Qt.BottomToolBarArea
            | QtCore.Qt.LeftToolBarArea
            | QtCore.Qt.RightToolBarArea
            )  
        self.addToolBar(QtCore.Qt.BottomToolBarArea, self.Bottom)
        self.Bottom.topLevelChanged.connect(self.handle_floating)
Sollte der Code verbesserungswürdig sein, freue ich mich auch über Euren Input!

Grüße Nobuddy
__deets__
User
Beiträge: 6178
Registriert: Mittwoch 14. Oktober 2015, 14:29

Samstag 19. Januar 2019, 11:51

Kann sein, das man da was mit dem Layout der Toolbar machen kann. Aber wenn du sowas willst, ist das ggf einfach das falsche Konzept. Bau dir einfach aus Widgets mit einem horizontalen Layout und einem spacer das Ding zusammen.

Die Toolbar soll viele andere Dinge können als nur eine Liste von Buttons sein. Sie soll abreissbar, andockbar, in der Größe veränderbar sein etc.

Das alles resultiert in automatischen Layout Aktionen, die mit deinem Ziel kollidieren. Also ist es nicht das richtige.
Nobuddy
User
Beiträge: 833
Registriert: Montag 30. Januar 2012, 16:38

Samstag 19. Januar 2019, 16:16

Hallo __deets__,

ich verwende das in einem MDI.

Zu Deinem Vorschlag:
- gibt es da auch die Möglichkeit, Grafiken einzubinden?
- hast Du mir dazu, evtl. ein kleines Beispiel?

Grüße Nobuddy
__deets__
User
Beiträge: 6178
Registriert: Mittwoch 14. Oktober 2015, 14:29

Samstag 19. Januar 2019, 16:28

Jeder Button kann Grafiken. Eine Toolbar ist nichts anderes. Fuer ein Beispiel fehlt mir im Moment die Zeit.
Nobuddy
User
Beiträge: 833
Registriert: Montag 30. Januar 2012, 16:38

Samstag 19. Januar 2019, 17:02

Aber in einer MDI, scheint es mir nicht so einfach zu sein.
In der MDI öffne ich ja SubWindows und die Buttons sollen unten horizontal in der MDI angebracht werden.
Habe da beim Googeln noch keine Lösung gefunden.
__deets__
User
Beiträge: 6178
Registriert: Mittwoch 14. Oktober 2015, 14:29

Samstag 19. Januar 2019, 17:22

Mir ist nicht ganz sicher was du mit MDI meinst. Ich kenne den Begriff natuerlich, aber was hat das mit deinem Problem zu tun? Wenn du ein MDI baust, dann hast du doch immer noch Kontrolle ueber Widgets, die deine Anwendung hat? Was hat das mit MDI zu tun?
Nobuddy
User
Beiträge: 833
Registriert: Montag 30. Januar 2012, 16:38

Sonntag 20. Januar 2019, 11:48

Meinst Du mit Widgets in der MDI SubWindows?
Wenn Ja, so möchte ich die SubWindows nur über die MDI steuern.

Mir fehlt da auch noch das Wissen über PYQT, da ich erst seit geraumer Zeit mich damit beschäftige.
Im Moment scheint mir das mit der ToolBar, die einfachste Lösung zu sein.
Beispiele über das Integrieren von PushButtons in Zusammenhang mit MDI habe ich keine gefunden.

Vielleicht hat sonst Jemand eine Lösung für mich, Buttons in einer horizontalen ToolBar (Bottom) zu positionieren. Also Buttons links wie rechts und evtl. zentriert zu positionieren!?!?
__deets__
User
Beiträge: 6178
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sonntag 20. Januar 2019, 11:54

Ich habe mir die QToolbar angeschaut, und es gibt keine offensichtliche Lösung die einfacher wäre als es selbst zu machen. Das ist dort so nicht vorgesehen, und wenn du sowas willst, Programmier es dir selbst.

Und Buttons genauso wie Menüs genauso wie Toolbars müssen einfach nur die von dir erklärte QAction triggern. Das ist eine simple Signal Slot Verbindung.
Antworten