0

我正在尝试为 Orange 3 创建一个新的小部件。我看到它提供了一些可以添加组件的默认区域(controlArea 和 mainArea)。据我所知,widget.py 将这两个都放在'self.leftWidgetPart' 中,它的布局使用垂直方向。从小部件.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 小部件似乎可以做到这一点,但我无法弄清楚相关代码片段是什么/在哪里(我猜我的 Python 很弱)。

任何帮助表示赞赏,

大卫

4

1 回答 1

0

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

对于self.controlArea在 Orange 中,您可以执行这样的操作。

    from PyQt4.QtGui import QHBoxLayout
    import sip

    sip.delete(self.controlArea.layout())
    self.controlArea.setLayout(QHBoxLayout())
于 2015-04-15T07:13:57.623 回答