如何使用 addItem 将 QPushButton 添加到 PyQtGraph?
How do I add a QPushButton to PyQtGraph using addItem?
我正在尝试在两个图的底部添加一个按钮,用于显示要从文件中读取的数据。在这两个图的下面将是一个按钮来控制一个动作。我试图从 pyqt 库中添加一个小部件、布局、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)
addItem 上的 pyqtgraph 文档指出 "adds a graphics item to the view box."
问题是,QtPushButton
不是图形项目,而是小部件。因此错误:addItem
期望 QGraphicsLayoutItem
(或继承 class 的东西),而您传递的是 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 的一个元素。这个问题可以帮助你:
我正在尝试在两个图的底部添加一个按钮,用于显示要从文件中读取的数据。在这两个图的下面将是一个按钮来控制一个动作。我试图从 pyqt 库中添加一个小部件、布局、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)
addItem 上的 pyqtgraph 文档指出 "adds a graphics item to the view box."
问题是,QtPushButton
不是图形项目,而是小部件。因此错误:addItem
期望 QGraphicsLayoutItem
(或继承 class 的东西),而您传递的是 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 的一个元素。这个问题可以帮助你: