2015-04-14 56 views
0

我正在嘗試爲Orange 3創建一個新的窗口小部件。我發現它提供了一些可以添加我的組件的默認區域(controlArea和mainArea)。據我所知,widget.py把這兩個放在'self.leftWidgetPart'裏面,它使用垂直方向來佈局。來自widget.py:如何水平佈局controlArea和mainArea

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很弱)。

讚賞任何幫助,

大衛

回答

0

在PyQt的一般,你可以通過刪除現有的佈局和用另一個替換它(你填充它希望之前)改變方向。

對於Orange中的self.controlArea,你可以這樣做。

from PyQt4.QtGui import QHBoxLayout 
    import sip 

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

謝謝你的幫忙!不幸的是,經過進一步調查後發現問題出在我的代碼中的其他地方。基本上我將正確的區域設置爲我的小部件的* parent *,但未將其添加到正確的* layout *中。它似乎是一個佈局,然後補充你添加到它的一個小部件。 –

+0

無論如何,我會接受你的答案,因爲我的問題現在已經解決了,而且這是我得到的唯一答案。另外,我沒有足夠的聲譽來簡單地提升你的表現;-) –