Несколько вертикальных панелей инструментов для главного окна - PullRequest
1 голос
/ 04 июня 2019

Я хочу создать главное окно с двумя панелями инструментов.Первый должен быть горизонтальным, сверху (классический), а второй - вертикальным с правой стороны.

Я могу переместить их после запуска приложения.Но как я могу запустить эту настройку при запуске моего приложения?Я не могу сделать второй (вертикальный) показ вертикально с правой стороны.

Текущий дисплей:

enter image description here

Требуемый дисплей:

enter image description here

Код:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication, QPushButton, QTableView, QToolBar
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt

class Example(QMainWindow):

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

        self.initUI()

    def jump_A(self):
        print("Hello A.")

    def jump_B(self):
        print("Hello B.")

    def jump_C(self):
        print("Hello C.")        

    def initUI(self):               

        #  textEdit = QTextEdit()
        #  self.setCentralWidget(textEdit)

        table = QTableView()
        self.setCentralWidget(table)

        exitAct = QAction(QIcon('system-shutdown.png'), 'Exit', self)
        exitAct.setShortcut('Ctrl+Q')
        exitAct.setStatusTip('Exit application')
        exitAct.triggered.connect(self.close)

        AAct = QAction('A', self)
        AAct.setShortcut('A')
        AAct.setStatusTip('Jump to first entry with "A"')
        AAct.triggered.connect(self.jump_A)

        BAct = QAction('B', self)
        BAct.setShortcut('B')
        BAct.setStatusTip('Jump to first entry with "B"')
        BAct.triggered.connect(self.jump_B)

        CAct = QAction('C', self)
        CAct.setShortcut('C')
        CAct.setStatusTip('Jump to first entry with "C"')
        CAct.triggered.connect(self.jump_C)

        self.statusBar()

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAct)

        toolbar_main = self.addToolBar('Exit')
        toolbar_main.addAction(exitAct)

        toolbar_speed_dial = self.addToolBar('SpeedDial')
        toolbar_speed_dial.setOrientation(Qt.Vertical)

        toolbar_speed_dial.addAction(AAct)
        toolbar_speed_dial.addAction(BAct)
        toolbar_speed_dial.addAction(CAct)

        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('Main window')    
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

1 Ответ

1 голос
/ 04 июня 2019

QMainWindow имеет несколько методов addToolBar (), в вашем случае вы используете метод addToolBar(), который передает строку и который по умолчанию помещает ее сверху, если вы хотите, чтобы она была размещена с правой стороны вы должны использовать метод addToolBar(), который получает Qt::ToolBarArea и QToolBar.

# ...
toolbar_main.addAction(exitAct)

toolbar_speed_dial = QToolBar('SpeedDial')
self.addToolBar(Qt.RightToolBarArea, toolbar_speed_dial)

toolbar_speed_dial.addAction(AAct)
# ...

enter image description here

...