我想在现有的PySide应用程序中添加pyqtgraph图。所有现有示例都使用某种形式的QLayout来实现此目的:
from PySide import QtGui
import sys
import pyqtgraph
app = QtGui.QApplication(sys.argv)
my_widget = QtGui.QWidget()
btn = QtGui.QPushButton("my button", my_widget)
plot = pyqtgraph.PlotWidget()
plotLayout = QtGui.QVBoxLayout()
plotLayout.addWidget(plot)
my_widget.setLayout(plotLayout)
my_widget.show()
app.exec_()
是否可以将pyqtgraph图添加到我的窗口小部件而不首先将其添加到布局?我猜我需要这样做,因为我试图将小部件添加到小部件中。 pyqtgraph是否提供更像QPushButton或QLabel的东西,可以直接添加到小部件中?
答案 0 :(得分:1)
小部件是pyqtgraph.PlotWidget()
(在上面的代码中)。您可以将其添加到另一个父窗口小部件,就像使用pyqtgraph.PlotWidget(parent)
的其他窗口小部件一样(有关构造函数参数列表,请参阅documentation)。这会将它放置在父窗口小部件内的坐标(0,0)
处,并具有默认大小(我不知道这个大小是什么或如何确定 - 它可能具有维度(0,0)
或同样小的东西)。
但是,通常Qt界面中对象的层次结构应该遵循Widget - >布局 - >小工具 - >布局 - >小工具......(等)。这允许将多个小部件放置在另一个小部件内,并通过布局适当地间隔和调整大小。如果没有布局,您必须尝试手动指定每个小部件的坐标和尺寸。只要你不介意在窗口大小改变时小部件没有正确调整大小,这是可能的(但很麻烦)。
鉴于确保窗口小部件始终位于布局内的少量开销,并且布局总是在窗口小部件内,我建议您遵循该模式,除非您有特定的理由不这样做。