主窗口的多个垂直工具栏

时间:2019-06-04 14:49:39

标签: python pyqt pyqt5 toolbar

我想创建一个带有两个工具栏的主窗口。第一个应该是水平的,在顶部(经典),第二个应该是垂直的在右侧。

应用程序运行后,我可以移动它们。但是,如何在启动应用程序时初始化此设置? 我无法使第二个(垂直)垂直显示在右侧。

当前显示:

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 个答案:

答案 0 :(得分:1)

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