[PyQt] layout management serious problem

Mark Summerfield mark at qtrac.eu
Fri Oct 12 14:05:51 BST 2007


On 2007-10-12, think_resist at hushmail.com wrote:
> Hi all,
>
> I'm completely confused on a simple thing (from what I read):
> layout management
>
> I've written a pyqt hui app that has a Mainwindow, a centralwidget
> and 15 widgets (textedit, linedit, pushbuttun) that belong to the
> centralwidget. I've written their size, heigh , position and
> everythig worked so far. When I got the program to run on a system
> with different resolution, it was...10 times bigger (and 1000
> uglier)! So I've realized i have to use a layout manager...I've
> read many texts in the web but i don't get the logic behind this
> thing. Can't i just create the mainwindow, the size i want, then
> create the central widget, create a layout manager, put the central
> widget on it and then start adding widgets on the central widget,
> or this is no tgoing to work? Do I have to write down how each
> widget will grow or shrink? Very confused, will appreciate any help
> very much

It is almost always a mistake to specify sizes for Qt widgets (except
for top-level windows).

Try something like this in your QMainWindow subclass's __init__():

    # create the 15 widgets (no sizes, no positions!)
    grid = QGridLayout() # Or any other layout
    grid.addWidget(myWidget01, row, col) # set row, col appropriately
    # ...
    grid.addWidget(myWidget15, row, col)

    centralWidget = QWidget()
    centralWidget.setLayout(grid)
    self.setCentralWidget(centralWidget)

Hope this helps!

-- 
Mark Summerfield, Qtrac Ltd., www.qtrac.eu



More information about the PyQt mailing list