Python:PyQtGraph 不显示动画

Posted

技术标签:

【中文标题】Python:PyQtGraph 不显示动画【英文标题】:Python: PyQtGraph is not showing animation 【发布时间】:2018-06-12 13:36:41 【问题描述】:

我有一个包含多个节点的图表。一旦用户单击任何节点,图形应该以这样的方式双曲线化,即单击的节点应该位于图形的中心(通常是 2D 坐标系原点的位置)。当我单击时,图中没有更新,但是节点(散点)的新坐标值会在本地保存的文件中更新。下面是用于渲染和更新的函数。

# Function to render the H2 tree map embedded in Poincare disc
def render_h2_tree(positions):

    global adj
    global nodeText
    # Configuring the PyQt graphic window
    pg.setConfigOption('background', 'k')
    pg.setConfigOption('foreground', 'w')
    pg.setConfigOptions(antialias=True)

    w = pg.GraphicsWindow()                 # creating an instance of the PyQt GraphicsWindow
    w.setWindowTitle('H2 tree for Emails')  # set the title of the graphic window
    v = w.addViewBox()                      # add a view box to the graphic window
    v.setAspectLocked()
    g = Graph()                             # create an instance of the class Graph
    v.addItem(g)                            # add the created graph instance to the view box

    g.setData(pos=positions, adj=adj, size=0.01, pxMode=False, text=nodeText)  # set the node in the graphic window

    # Start Qt event loop unless running in interactive mode or using pyside.
    import sys

    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()

我在这里做错了什么?谢谢。

【问题讨论】:

【参考方案1】:

所以我能够解决这个问题。修改后的代码如下:

w = pg.GraphicsWindow()                 # creating an instance of the PyQt GraphicsWindow
v = w.addViewBox()                      # add a view box to the graphic window
g = Graph()                             # create an instance of the class Graph

# Function to render the H2 tree map embedded in Poincare disc
def render_h2_tree(positions):

    global adj
    global nodeText
    global w
    global v
    global g

    # Configuring the PyQt graphic window
    pg.setConfigOption('background', 'k')
    pg.setConfigOption('foreground', 'w')
    pg.setConfigOptions(antialias=True)

    w.setWindowTitle('H2 tree for Emails')  # set the title of the graphic window        
    v.setAspectLocked()        
    v.addItem(g)                            # add the created graph instance to the view box

    g.setData(pos=positions, adj=adj, size=0.01, pxMode=False, text=nodeText)  # set the node in the graphic window

    # Start Qt event loop unless running in interactive mode or using pyside.
    import sys

    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()

在将图形窗口、视图框和图形声明为全局项后,我确保不会为其创建任何新实例。这样,当单击窗口中的任何节点时,所有这些项目的实例都保持不变,然后可以将节点绘制到新的 2D 位置。

【讨论】:

以上是关于Python:PyQtGraph 不显示动画的主要内容,如果未能解决你的问题,请参考以下文章

PyQtGraph 图在 Qt MainWindow 上显示不正确

从 32 位移动到 64 位后 PyQtGraph 不工作

程序执行时pyqtgraph绘图不显示

pyqtgraph:如何在 00:00 时间之前不显示时间序列(使用 AxisItem)

如何在 PyQTgraph 中显示帧率?

用Python串口实时显示数据并绘图pyqtgraph(详细教程)