从MainWindow的其他类中添加多个Qmenu

时间:2019-08-27 10:57:01

标签: python class pyqt5 qmenu qmenubar

我希望主窗口中有一个菜单栏,并且能够从其他类中设置菜单栏中的菜单。使用setMenuWidget命令将覆盖代码中所示的第一个菜单选项。在我设置菜单的课程中,我认为我可能需要先设置一个菜单而不是一个菜单栏,然后​​在主窗口中设置菜单栏。

这是我想要的,可以通过在类中填充单个菜单栏来实现,尽管我试图避免使用此方法。

enter image description here

只显示第二个菜单

enter image description here

import sys
from PyQt5.QtWidgets import QAction, QApplication, QMainWindow
from PyQt5 import QtCore, QtGui, QtWidgets

class ToolBar0(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self)

        bar = self.menuBar() # don't think I need a menubar here
        file_menu = bar.addMenu('menu1')
        one = QAction('one', self)
        two = QAction('two', self)
        file_menu.addAction(one)
        file_menu.addAction(two)


class ToolBar1(QMainWindow):
    def __init__(self, parent=None):
        QMainWindow.__init__(self)

        bar = self.menuBar() # don't think I need a menubar here
        file_menu = bar.addMenu('menu2')
        one = QAction('one', self)
        two = QAction('two', self)
        file_menu.addAction(one)
        file_menu.addAction(two)


class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self, parent=None)

        #should a menubar be set up here?

        #For seting widgets in main window
        self.Tool_Bar0 = ToolBar0(self)
        self.setMenuWidget(self.Tool_Bar0)

        ###menu_bar0 is over written
        self.Tool_Bar1 = ToolBar1(self)
        #self.setMenuWidget(self.Tool_Bar1)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    # creating main window
    mw = MainWindow()
    mw.show()
    sys.exit(app.exec_())

1 个答案:

答案 0 :(得分:1)

您可以将基类与方法结合使用,以返回包含QMenu个项目的QAction个项目列表或QAction个项目的列表,然后将其呈现在{{1 }}工具栏,无论您使用哪种方式,下面都是一个示例:

QMainWindow