pyside6/pyqt5/pyside2/pyqt6绘制图形

虽然可以在 PySide6 中嵌入 matplotlib 图,但这种体验并不完全是原生的。对于简单且高度交互的绘图,您可能需要考虑改用 PyQtGraph。PyQtGraph 建立在 PySide6 原生 QGraphicsScene 之上,提供更好的绘图性能,特别是对于实时数据,并提供交互性和使用 Qt 图形小部件轻松自定义绘图的能力。在本章中,我们将介绍使用 PyQtGraph 创建绘图微件的第一步,然后演示使用线条颜色、线型、轴标签、背景颜色和绘制多条线来自定义绘图。

为了能够将 PyQtGraph 与 PySide6 一起使用,您首先需要将包安装到您的 Python 环境中。您可以使用 pip 来执行此操作,pip install pyqtgraph 安装即可。

创建 PyQtGraph 小部件 在 PyQtGraph 中,所有绘图都是使用 PlotWidget 小部件创建的。此小组件提供了一个包含的画布,可以在该画布上添加和配置任何类型的绘图。在引擎盖下,这个绘图小部件使用Qt原生QGraphicsScene,这意味着它可以快速高效,但很容易与应用程序的其余部分集成。可以像创建任何其他小部件一样创建 PlotWidget。

import sys
from PySide6 import QtWidgets
import pyqtgraph as pg # import PyQtGraph after Qt

class MainWindow(QtWidgets.QMainWindow):
  def __init__(self):
    super().__init__()
    self.resize(1000,800)


    self.graphWidget = pg.PlotWidget()
    self.setCentralWidget(self.graphWidget)
    hour = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    temperature = [30, 32, 34, 32, 33, 31, 29, 32, 35, 45]
    # plot data: x, y values
    self.graphWidget.plot(hour, temperature)

app = QtWidgets.QApplication(sys.argv)
main = MainWindow()
main.show()
app.exec()

PyQtGraph 的默认绘图样式非常裸露 - 黑色背景和细线(几乎看不见)白线。下面的例子中,我们将看看 PyQtGraph 中有哪些选项可以改善绘图的外观和可用性。样式图

样式绘制 PyQtGraph 使用 Qt 的 QGraphicsScene 来渲染图形。这使我们能够访问所有用于绘图的标准Qt线条和形状样式选项。但是,PyQtGraph 提供了一个 API,用于使用它们来绘制绘图和管理绘图画布。下面我们将介绍创建和自定义自己的绘图所需的最常见的样式功能。背景颜色 从上面的应用骨架开始,我们可以通过在 PlotWidget 实例(在 self.graphWidget 中)调用 .setBackground 来更改背景颜色。下面的代码通过传入字符串设置背景颜色

self.graphWidget.setBackground('w')

根据 matplotlib 中使用的标准颜色,可以使用单个字母提供许多简单颜色。它们并不奇怪,除了“k”用于黑色。表 13.常见颜色代码 颜色 字母代码 蓝色 b 绿色 g 红色 r 青色 (亮蓝绿色) c 品红色 (亮粉色) m 黄色 y 黑色 k 白色 w 除了这些单字母代码外,您还可以使用十六进制符号设置颜色,例如。#672922 作为字符串。self.graphWidget.setBackground('#bbccaa') # 十六进制 RGB 和 RGBA 值可以分别作为 3 元组或 4 元组传入,values 为0-255

self.graphWidget.setBackground((100,50,255)) # RGB each 0-255
self.graphWidget.setBackground((100,50,255,25)) # RGBA (A = alpha)

最后,您还可以直接使用Qt的QColor类型指定颜色。565 self.graphWidget.setBackground(QtGui.QColor(100,50,254,25)) 如果您在应用程序的其他位置使用特定的 QColor 对象,或者将打印背景设置为默认的 GUI 背景颜色,这将非常有用。color = self.palette().color(QtGui.QPalette.Window) # 获取默认窗口背景,self.graphWidget.setBackground(color) 线条颜色、宽度和样式 PyQtGraph 中的线条是使用标准 Qt QPen 类型绘制的。

color = self.palette().color(QtGui.QPalette.Window) # Get the default
window background,
self.graphWidget.setBackground(color)

线条颜色、宽度和样式 PyQtGraph 中的线条是使用标准 Qt QPen 类型绘制的。这使您可以像在任何其他QGraphicsScene绘图中一样完全控制线条绘制。要使用笔绘制一条线,您只需创建一个新的 QPen 实例并将其传递到 plot 方法中即可。下面我们创建一个 QPen 对象,传入一个 3 元组的 int 值,指定一个 RGB 值(全红色)。我们也可以通过传递“r”或QColor对象来定义它。然后我们用 pen 参数将其传递到绘图中。pen = pg.mkPen(color=(255, 0, 0)) self.graphWidget.plot(小时,温度,pen=pen)

示例如下:

import sys
from PySide6 import QtWidgets
import pyqtgraph as pg # import PyQtGraph after Qt
class MainWindow(QtWidgets.QMainWindow):
  def __init__(self):
    super().__init__()
    self.graphWidget = pg.PlotWidget()
    self.setCentralWidget(self.graphWidget)
    hour = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    temperature = [30, 32, 34, 32, 33, 31, 29, 32, 35, 45]
    self.graphWidget.setBackground("w")
    pen = pg.mkPen(color=(255, 0, 0))
    self.graphWidget.plot(hour, temperature, pen=pen)
app = QtWidgets.QApplication(sys.argv)
main = MainWindow()
main.show()
app.exec()

通过更改 QPen 对象,我们可以更改线条的外观,包括使用标准 Qt 线条样式的线宽(像素和虚线、虚线等)。例如,以下示例创建一条 15px 宽的蓝色虚线。

pen = pg.mkPen(color=(0, 255, 0), width=15, style=QtCore.Qt.DashLine)

可以使用标准的Qt线条样式,包括Qt.SolidLine、Qt.DashLine、Qt.DotLine、Qt.DashDotLine和Qt.DashDotDotLine。下图显示了这些行的示例,您可以在Qt文档中阅读更多内容。

未完待续。。。。。。。

Pyside6和PyQt6都是Python编程语言中用于创建GUI应用程序的工具包。它们都是基于Qt框架构建的,因此具有相似的功能和API。 以下是关于使用Pyside6/PyQt6进行快速开发和实战的一些提示: 1. 学习Qt框架:Qt框架是创建GUI应用程序的基础。学习Qt框架可以帮助你了解Pyside6和PyQt6的工作原理,以及如何使用它们创建GUI应用程序。 2. 学习Python编程语言Pyside6和PyQt6都是Python编程语言的库。因此,熟悉Python编程语言可以帮助你更好地使用这些库。 3. 使用Qt Designer:Qt Designer是一个可视化工具,可以帮助你轻松创建GUI应用程序的UI。你可以使用Qt Designer创建UI,并将其导入到Pyside6/PyQt6项目中。 4. 学习信号和槽:信号和槽是Pyside6/PyQt6中的重要概念。信号是一个事件,例如按钮单击或文本更改,而槽是响应这些事件的函数。学习如何使用信号和槽可以帮助你创建响应用户操作的GUI应用程序。 5. 阅读文档和示例代码:Pyside6和PyQt6都有详细的文档和示例代码。阅读这些文档和示例代码可以帮助你了解如何使用库中的不同功能和API,并为你的项目提供灵感。 6. 加入社区:Pyside6和PyQt6有活跃的社区和论坛。加入这些社区可以帮助你与其他开发人员交流经验,并得到解决问题的帮助。 总之,使用Pyside6和PyQt6进行快速开发和实战需要学习Qt框架、Python编程语言Qt Designer、信号和槽等知识,并阅读文档和示例代码。加入社区可以帮助你更好地了解和使用这些库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值