是否可以在不使用 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 映像?