python qt : automatically resizing main window to fit content

Vince picture Vince · Jan 6, 2016 · Viewed 22.7k times · Source

I have a main window which contains a main widget, to which a vertical layout is set. To the layout is added a QTableWidget only (for the moment).

When I start the application and call show on the main_window, only part of the QTableWidget is shown. I can extend the window manually to see it all, but I would like the window to have its size nicely adapted to the size of the QTableWidget.

Googling the question found a lot of posts on how to use resize to an arbitrary size, and call to resize(int) works fine, but this is not quite what I am asking

Lots of other posts are not explicit enough, e.g "use sizePolicy" or "use frameGeometry" or "use geometry" or "use sizeHint". I am sure all of them may be right, but an example on how to would be awesome.

Answer

Daniele Pantaleone picture Daniele Pantaleone · Jan 6, 2016

You can do something like this, from within your MainWindow after placing all the elements you need in the layout:

self.setFixedSize(self.layout.sizeHint())

This will set the size of the MainWindow to the size of the layout, which is calculated using the size of widgets that are arranged in the layout.