是否可以在不使用 QLayout 的情况下将 pyqtgraph 添加到 PySide 应用程序?

Posted

技术标签:

【中文标题】是否可以在不使用 QLayout 的情况下将 pyqtgraph 添加到 PySide 应用程序?【英文标题】:Is it possible to add a pyqtgraph to a PySide app without using a QLayout? 【发布时间】:2016-04-09 19:58:05 【问题描述】:

我想在我现有的 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 的东西,可以直接添加到小部件中?

【问题讨论】:

【参考方案1】:

小部件是pyqtgraph.PlotWidget()(在您上面的代码中)。您可以将它添加到另一个父小部件,就像使用 pyqtgraph.PlotWidget(parent) 处理其他小部件一样(有关构造函数参数列表,请参阅 documentation)。这会将其放置在具有默认大小的父小部件内的坐标 (0,0) 处(我不知道这个大小是什么或它是如何确定的 - 它可能有尺寸 (0,0) 或同样小的东西)。

但是,通常 Qt 界面中对象的层次结构应该遵循 Widget -> Layout -> Widget -> Layout -> Widget ...(等等)。这允许将多个小部件放置在另一个小部件内,并根据布局适当地间隔和调整大小。如果没有布局,您必须尝试手动指定每个小部件的坐标和尺寸。这是可能的(但很麻烦),只要您不介意窗口大小更改时小部件无法正确调整大小。

考虑到确保小部件始终位于布局内且布局始终位于小部件内的少量开销,我鼓励您遵循该模式,除非您有特定的理由不这样做。

【讨论】:

以上是关于是否可以在不使用 QLayout 的情况下将 pyqtgraph 添加到 PySide 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在不运行 QEMU 的情况下将文件复制到 QEMU 映像?

是否可以在不使用表单的情况下将数组从树枝发送到控制器?

是否可以在不重写的情况下将数据添加到文件中?

是否可以在不存储卡的情况下将交易与客户联系起来?

是否可以在不使用 jsp:include 的情况下将 jspf 文件添加到 jsp 页面?

是否可以在不使用 LoadLibrary 的情况下将函数“复制”到另一个进程中并在线程中执行它?