如何横向布局controlArea和mainArea

How to layout controlArea and mainArea horizontally

我正在尝试为 Orange 3 创建一个新的小部件。我看到它提供了一些默认区域(controlArea 和 mainArea),我可以在其中添加我的组件。据我所知,widget.py 将这两个都放在 'self.leftWidgetPart' 中,它的布局使用垂直方向。来自 widget.py:

self.leftWidgetPart = gui.widgetBox(self.topWidgetPart,
    orientation="vertical", margin=0)

    if self.want_main_area:
        ...
        self.mainArea = gui.widgetBox(self.topWidgetPart,
            orientation="vertical",
            sizePolicy=QSizePolicy(QSizePolicy.Expanding,
            QSizePolicy.Expanding),
            margin=0)

我想改为水平布局 controlArea 和 mainArea。我相信这是可能的,因为 OWBoxPlot 小部件似乎可以做到这一点,但我无法计算出 what/where 相关代码片段是(我猜我的 Python 很弱)。

感谢任何帮助,

大卫

通常在 PyQt 中,您可以通过删除现有布局并将其替换为另一个布局(希望在填充它之前)来更改方向。

对于橙色的self.controlArea,你可以这样做。

    from PyQt4.QtGui import QHBoxLayout
    import sip

    sip.delete(self.controlArea.layout())
    self.controlArea.setLayout(QHBoxLayout())