edifice.extra.PyQtPlot

edifice.extra.PyQtPlot#

class edifice.extra.PyQtPlot(plot_fun, **kwargs)[source]#

Bases: QtWidgetElement

A PyQtGraph PlotWidget.

Requires PyQtGraph.

It’s important to import edifice before importing pyqtgraph, so that pyqtgraph detects the same PyQt6 or PySide6 package used by edifice.

Example:

import numpy as np
from edifice import View, component
from edifice.extra import PyQtPlot
import pyqtgraph as pg

@component
def Component(self):

    def plot_fun(plot_item: pg.PlotItem):
        xs = np.linspace(-10, 10, 100)
        ys = np.sin(xs)
        plot_item.plot(x=xs, y=ys)

    PyQtPlot(plot_fun=plot_fun)

If you want a non-interactive plot that doesn’t respond to the mouse, you can disable mouse interaction with the plot by setting properties on the PlotItem.

Example:

def plot_fun(plot_item: pg.PlotItem):
    plot_item.setMouseEnabled(x=False, y=False)
    plot_item.hideButtons()
    ...

A more complete way to disable mouse interaction is to set the PlotWidget to be transparent for mouse events.

Example:

def plot_fun(plot_item: pg.PlotItem):
    cast(
        pg.PlotWidget, plot_item.getViewWidget()
    ).setAttribute(PySide6.QtCore.Qt.WidgetAttribute.WA_TransparentForMouseEvents)
Parameters:

plot_fun (Callable[[PlotItem], None]) –

Function which takes a PyQtGraph PlotItem and calls plot().

Edifice will call clear() before calling plot_fun.

Methods

__init__(plot_fun, **kwargs)

register_ref(reference)

Registers provided Reference to this Element.

set_key(key)

Sets the key of the Element.

Attributes

children

The children of this Element.

props

The props of this Element.

underlying

The underlying QWidget, which may not exist if this Element has not rendered.