python - 如何使用 addItem 将 QPushButton 添加到 PyQtGraph?

标签 python user-interface pyqt pyqtgraph

我正在尝试在两个图的底部添加一个按钮,该按钮将显示要从文件中读取的数据。在这两个图下面将有一个控制操作的按钮。我尝试从 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 文档声明它“将图形项添加到 View 框中。”

问题是,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?

关于python - 如何使用 addItem 将 QPushButton 添加到 PyQtGraph?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45184941/

相关文章:

python - 将 Python 列表(JSON 或其他)插入 MySQL 数据库

python - 无法使用 post 请求获取某些项目

c++ - 如何识别子进程的子进程?

java - 以编程方式创建编辑文本并将其对齐到 TextView 的右侧

Python 卡住的可执行文件在某些​​计算机上无法运行

qt - 在 QTreeView 中设置粗体行

python - tensorflow 中的权重初始化

java - JPanel GridBagLayout 到 GridPane

java - try catch java

python - QGraphicsScene 鼠标事件