繁体   English   中英

pyqtgraph,帮助理解源代码

[英]Pyqtgraph , help understanding source code

我想了解“ PyQtGraph”库的某些部分,尤其是涉及二维绘图时。

在源代码中,以下两个python文件为: PlotDataItem.pyPlotCurveItem.py (它们位于pyqtgraph/graphicsItems/ )。 但是在这两个文件中,我看不到要绘制的任何函数。 我的意思是我们只有保存x和y数据的方法( self.yDataself.xData )。 严格来说,绘制数据的方法在哪里? (等效于matplotlib中的draw() 。)

编辑:谢谢您的回答。 我正在阅读源代码,是的,我发现ViewBox.addItem中存在某些内容。 实际上,我尝试删除部分代码以查看曲线是否消失。 这些行:scene.addItem(item)和item.setParentItem(self.childGroup)似乎很重要。 无论如何,您是说我必须专注于QGraphicsScene和QGraphicsView吗? 您能确认我PlotDataItem只是其中“保存”了x和y数据而没有“情节”的文件吗?

简短的答案是PyQtGraph将图形委托给Qt的Graphics View Framework PyQtGraph将创建一个QGraphicsScene并将QGraphicsItems添加到该场景。 如果将QGraphicsView对象连接到该场景,则Qt将为您呈现具有该视图的变换(缩放,旋转等)的场景。

因此, PlotCurveItemPlotDataItemQGraphicsItem后代。 您可以通过调用他们的scene()方法找出他们属于哪个场景。 我花了些力气才能找到PyQtGraph将项目添加到场景的位置。 这是在做ViewBox.addItem ,这是由所谓的PlotItem.addItem ,而这又被称为PlotWidget.addItem

如果您想了解PyQtGraph,则必须阅读有关绘图类组织的部分。 不过,由于多重继承和命名不一致(有时窗口小部件会重载,并且一致的命名约定可能会导致名称冗长且笨拙),因此PyQtGraph类层次结构有时仍会令人困惑。 过去,我制作了UML图以获得更好的概述(请参见下文)。 蓝色类由PyQtGraph定义,黑色类为Qt类。 它并不完整,不是所有的PyQtGraph类都包括在内。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM