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

PyQtGraphPyQt5QMainWindow实现状态栏和工具栏的消息显示

发布时间:2023-12-13 12:34:16

PyQtGraph是一个Python的科学绘图库,可以轻松实现各种绘图需求。PyQt5是一个Python的GUI(图形用户界面)库,可以创建各种窗口和控件来构建应用程序的用户界面。QMainWindow是PyQt5中一个重要的类,用于创建主窗口,可以在主窗口中添加状态栏和工具栏。

在PyQtGraph中使用PyQt5的QMainWindow类来创建带有状态栏和工具栏的消息显示窗口的过程如下:

1. 导入所需的模块和类:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QToolBar, QAction, QStatusBar
import pyqtgraph as pg

2. 创建一个继承自QMainWindow的自定义主窗口类,并在构造函数中初始化窗口和界面元素:

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

        # 初始化窗口尺寸
        self.setGeometry(50, 50, 800, 600)

        # 创建状态栏并设置初始消息
        self.statusBar = self.statusBar()
        self.statusBar.showMessage("Ready")

        # 创建工具栏
        self.toolBar = self.addToolBar("Toolbar")

        # 添加操作按钮到工具栏
        self.action1 = QAction("Action 1", self)
        self.action1.triggered.connect(self.show_message_1)
        self.toolBar.addAction(self.action1)

        self.action2 = QAction("Action 2", self)
        self.action2.triggered.connect(self.show_message_2)
        self.toolBar.addAction(self.action2)

        # 创建绘图窗口
        self.graphicsView = pg.GraphicsView()
        self.setCentralWidget(self.graphicsView)

        # 创建绘图场景
        self.graphicsScene = pg.GraphicsScene()
        self.graphicsView.setScene(self.graphicsScene)

3. 在自定义主窗口类中添加用于显示不同消息的槽函数:

def show_message_1(self):
    self.statusBar.showMessage("Action 1 triggered")

def show_message_2(self):
    self.statusBar.showMessage("Action 2 triggered")

4. 创建应用程序并运行:

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

以上代码通过继承自QMainWindow的自定义主窗口类创建了一个带有状态栏和工具栏的消息显示窗口。在状态栏上显示了初始消息"Ready",同时在工具栏上添加了两个操作按钮"Action 1"和"Action 2",点击按钮后会在状态栏上显示相应的消息。

下面是一个完整的使用例子,该例子绘制了一个简单的曲线,并在工具栏上添加了一个操作按钮,当点击按钮时,曲线会变换一次颜色:

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QToolBar, QAction, QStatusBar
import pyqtgraph as pg


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

        # 初始化窗口尺寸
        self.setGeometry(50, 50, 800, 600)

        # 创建状态栏并设置初始消息
        self.statusBar = self.statusBar()
        self.statusBar.showMessage("Ready")

        # 创建工具栏
        self.toolBar = self.addToolBar("Toolbar")

        # 添加操作按钮到工具栏
        self.action = QAction("Change color", self)
        self.action.triggered.connect(self.change_color)
        self.toolBar.addAction(self.action)

        # 创建绘图窗口
        self.graphicsView = pg.GraphicsView()
        self.setCentralWidget(self.graphicsView)

        # 创建绘图场景
        self.graphicsScene = pg.GraphicsScene()
        self.graphicsView.setScene(self.graphicsScene)

        # 绘制曲线
        self.plotItem = pg.PlotItem()
        self.graphicsScene.addItem(self.plotItem)

        self.x = [1, 2, 3, 4, 5]
        self.y = [1, 4, 9, 16, 25]
        self.curve = pg.PlotCurveItem(self.x, self.y, pen=pg.mkPen(color='r', width=2))
        self.plotItem.addItem(self.curve)

    def change_color(self):
        if self.curve.opts['pen'].color().name() == 'r':
            self.curve.setPen(pg.mkPen(color='b', width=2))
            self.statusBar.showMessage("Color changed to blue")
        else:
            self.curve.setPen(pg.mkPen(color='r', width=2))
            self.statusBar.showMessage("Color changed to red")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

这个例子创建了一个带有状态栏和工具栏的消息显示窗口,并在窗口内绘制了一条红色的曲线。点击工具栏上的按钮会将曲线的颜色从红色改变为蓝色,并在状态栏上显示相应的消息。

通过这个例子,我们可以看到如何使用PyQtGraph和PyQt5的QMainWindow类来创建带有状态栏和工具栏的消息显示窗口,并通过操作按钮来改变窗口中绘图元素的属性。这种方式可以方便地实现各种功能和交互需求。