from PyQt5 import QtWidgets, QtCore, QtGui
import pyqtgraph as pg
import numpy as np
def main():
app = QtWidgets.QApplication([])
view = QtWidgets.QGraphicsView()
scene = QtWidgets.QGraphicsScene(parent=view)
view.setScene(scene)
plot = pg.PlotWidget()
curve = plot.plot()
# uncomment to disable PlotWidget click functionality
# container_widget = QtWidgets.QWidget()
# layout = QtWidgets.QHBoxLayout(container_widget)
# layout.addWidget(plot)
# layout.setContentsMargins(0, 0, 0, 0)
# container_widget.setLayout(layout)
# plot = container_widget
xs = list()
ys = list()
idx = 0
def update():
nonlocal idx
curve.setData(x=xs, y=ys)
xs.append(idx)
ys.append(np.sin(idx / 20))
idx += 1
return
proxy = QtWidgets.QGraphicsProxyWidget()
proxy.setWidget(plot)
proxy.setGeometry(QtCore.QRectF(0, 0, 600, 600))
x, y, w, h = plot.x(), plot.y(), plot.width(), plot.height()
border_size = 10
container = QtWidgets.QGraphicsRectItem()
container.setPen(QtGui.QPen(QtGui.QColor(0, 0, 0)))
container.setBrush(QtGui.QBrush(QtGui.QColor(100, 100, 100)))
container.setRect(x - border_size, y - border_size, w + 2 * border_size, h + 2 * border_size)
proxy.setParentItem(container)
scene.addItem(container)
timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.start(10)
view.resize(800, 800)
view.show()
app.exec_()
if __name__ == '__main__':
main()