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类来创建带有状态栏和工具栏的消息显示窗口,并通过操作按钮来改变窗口中绘图元素的属性。这种方式可以方便地实现各种功能和交互需求。
