python - PyQt widget alignment with other elements -
consider small gui example supposed display 2 groupboxes. first 1 placed in custom qwidget:
import sys pyqt4 import qtgui class someboxwidget(qtgui.qwidget): def __init__(self): super(someboxwidget, self).__init__() #create groupbox , layout self.group_box = qtgui.qgroupbox("group box in widget") self.group_box_layout = qtgui.qvboxlayout() self.group_box.setlayout(self.group_box_layout) #place stuff there self.btn = qtgui.qpushbutton("button", self) self.group_box_layout.addwidget(self.btn) self.main_layout = qtgui.qvboxlayout() self.main_layout.addwidget(self.group_box) self.setlayout(self.main_layout) this qwidget placed next second qgroupbox placed directly main gui layout:
class somegui(qtgui.qwidget): def __init__(self): super(somegui, self).__init__() #create 2nd groupbox , layout self.group_box = qtgui.qgroupbox("group box in layout") self.group_box_layout = qtgui.qvboxlayout() self.group_box.setlayout(self.group_box_layout) self.btn = qtgui.qpushbutton("button", self) self.group = someboxwidget() self.group_box_layout.addwidget(self.btn) self.main_layout = qtgui.qvboxlayout() self.main_layout.addwidget(self.group_box) self.main_layout.addwidget(self.group) self.setlayout(self.main_layout) self.show() def main(): app = qtgui.qapplication(sys.argv) ex = somegui() app.exec_() if __name__ == '__main__': main() you notice both qgroupboxes not aligned, assume because first 1 placed inside qwidget. how can align them keeping first box inside widget? if possible, without setting default fixed hight/width values somewhow.
edit: assume need setcontensmargins outer area...
you set content margins of layout of someboxwidget container widget 0 adding in class __init__:
self.main_layout.setcontentsmargins(0, 0, 0, 0) where arguments of setcontentsmargins respectively left, top, right, , bottom margins of layout. according documentation:
by default, qlayout uses values provided style. on platforms, margin 11 pixels in directions.
doing above in code provided results in:

Comments
Post a Comment