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:

enter image description here


Comments

Popular posts from this blog

java - Date formats difference between yyyy-MM-dd'T'HH:mm:ss and yyyy-MM-dd'T'HH:mm:ssXXX -

Fatal error: Call to undefined function menu_execute_active_handler() in drupal 7.9 -

python - RuntimeWarning: PyOS_InputHook is not available for interactive use of PyGTK -