欢迎访问宙启技术站
智能推送

PyQtGraphPyQt5QMainWindow实现菜单栏和工具栏的创建和展示

发布时间:2023-12-13 12:29:19

PyQtGraph是一款用于数据可视化的Python库。它基于PyQt5,提供了一系列丰富的绘图和交互功能。在PyQtGraph中,我们可以使用QMainWindow类创建一个主窗口,并在该主窗口中创建菜单栏和工具栏。

首先,我们需要安装PyQtGraph和PyQt5库,可以使用以下命令进行安装:

pip install pyqtgraph
pip install pyqt5

接下来,我们可以通过以下代码创建一个带有菜单栏和工具栏的QMainWindow:

import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QAction, QToolBar

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.createMenuBar()
        self.createToolBar()

        self.setGeometry(100, 100, 800, 600)
        self.setWindowTitle('PyQtGraph MainWindow')
        self.show()

    def createMenuBar(self):
        menubar = self.menuBar()

        fileMenu = menubar.addMenu('File')
        openAction = QAction('Open', self)
        fileMenu.addAction(openAction)

        saveAction = QAction('Save', self)
        fileMenu.addAction(saveAction)

        exitAction = QAction('Exit', self)
        exitAction.triggered.connect(self.close)
        fileMenu.addAction(exitAction)

    def createToolBar(self):
        toolbar = QToolBar(self)
        self.addToolBar(toolbar)

        plotAction = QAction('Plot', self)
        toolbar.addAction(plotAction)

        clearAction = QAction('Clear', self)
        toolbar.addAction(clearAction)

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

    mainwin = MainWindow()

    sys.exit(app.exec_())

在上面的代码中,我们首先导入了必要的类和模块。然后,我们创建一个MainWindow类继承自QMainWindow,并在该类的构造函数中调用了initUI方法。

initUI方法用于初始化主窗口的界面。在该方法中,我们调用了createMenuBar和createToolBar方法,分别用于创建菜单栏和工具栏。

在createMenuBar方法中,我们首先通过self.menuBar()获取菜单栏对象,然后使用addMenu方法创建一个名为"File"的菜单。接着,我们使用QAction类创建了三个动作,分别是打开、保存和退出。最后,使用addAction方法将这些动作添加到菜单中。

在createToolBar方法中,我们首先创建一个QToolBar对象,并使用self.addToolBar方法将其添加到主窗口中。然后,我们使用QAction类创建了两个动作,分别是绘图和清除。最后,使用addAction方法将这些动作添加到工具栏中。

最后,在main函数中,我们创建了一个QApplication对象和一个MainWindow对象,然后通过app.exec_()运行主循环,展示主窗口。

运行上述代码,即可展示一个带有菜单栏和工具栏的主窗口。可以通过单击菜单或工具栏中的动作,触发相应的事件。