添加按钮到PyQtGraph布局

时间:2017-07-19 08:25:35

标签: python user-interface pyqt pyqtgraph

我正在尝试在两个绘图的底部添加一个按钮,该按钮将显示从文件读入的数据。在这两个图下面将是一个控制动作的按钮。我试图从pyqt库添加一个widget,layout,graphicsItem。 我可以轻松地为布局添加标签,但添加按钮时会出现以下错误

addItem(self, QGraphicsLayoutItem, int, int, alignment: Union[Qt.Alignment, Qt.AlignmentFlag] = Qt.Alignment()): argument 1 has unexpected type 'QPushButton'

正在测试的代码:

import pyqtgraph as pg

win = pg.GraphicsWindow()

win.setWindowTitle('Test App')
label = pg.LabelItem(justify='right')
win.addItem(label)

button = QtGui.QPushButton()

p1 = win.addPlot(row=0, col=0)
p2 = win.addPlot(row=1, col=0)
p3 = win.addLayout(row=2, col=0)
p3.addItem(button,row=1,col=1)

1 个答案:

答案 0 :(得分:1)

addItem上的pyqtgraph文档指出它“将图形项添加到视图框中。”

问题是,QtPushButton不是图形项,而是一个小部件。因此,错误:addItem期待QGraphicsLayoutItem(或继承该类的内容),并且您传递了QWidget

要将小部件添加到GraphicsWindow,您可以使用QGraphicsProxyWidget

打包它
proxy = QtGui.QGraphicsProxyWidget()
button = QtGui.QPushButton('button')
proxy.setWidget(button)

p3 = win.addLayout(row=2, col=0)
p3.addItem(proxy,row=1,col=1)

但是根据您需要做什么,您可能希望实现PyQt GUI,GraphicsWindow是此GUI的一个元素。这个问题可以帮助您:How to update a realtime plot and use buttons to interact in pyqtgraph?