Skip to content
Advertisement

How to set a tkinter window to a constant size

I’m programming a little game with tkinter and briefly, I’m stuck.

I have a kind od starting menu, in which are two buttons and one label.

If I just create the frame everything is fine, it has the size 500×500 pixels

I want the background not to change when I create the buttons and the labe, but it adapts the size whatever I do. Here is my code:

JavaScript

I’ve searched around on stackoverflow and didn’t get anything useful! I’ve found just one question a bit similar to mine but the answer didn’t work. I tried this:

(1) mw.resizable(width=False, height=False)

I can’t imagine what is the problem, I’m really desperate.

Advertisement

Answer

You turn off pack_propagate by setting pack_propagate(0)

Turning off pack_propagate here basically says don’t let the widgets inside the frame control it’s size. So you’ve set it’s width and height to be 500. Turning off propagate stills allows it to be this size without the widgets changing the size of the frame to fill their respective width / heights which is what would happen normally

To turn off resizing the root window, you can set root.resizable(0, 0), where resizing is allowed in the x and y directions respectively.

To set a maxsize to window, as noted in the other answer you can set the maxsize attribute or minsize although you could just set the geometry of the root window and then turn off resizing. A bit more flexible imo.

Whenever you set grid or pack on a widget it will return None. So, if you want to be able to keep a reference to the widget object you shouldn’t be setting a variabe to a widget where you’re calling grid or pack on it. You should instead set the variable to be the widget Widget(master, ....) and then call pack or grid on the widget instead.

JavaScript
User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement