68

I have a program which creates a window where a message is displayed according to a check box.

How can I make the window size constant when the message is displayed and the message is not displayed?

from Tkinter import *

class App:
    def __init__(self,master):
        self.var = IntVar()
        frame = Frame(master)
        frame.grid()
        f2 = Frame(master,width=200,height=100)
        f2.grid(row=0,column=1)
        button = Checkbutton(frame,text='show',variable=self.var,command=self.fx)
        button.grid(row=0,column=0)
        msg2="""I feel bound to give them full satisfaction on this point"""
        self.v= Message(f2,text=msg2)
    def fx(self):
        if self.var.get():
            self.v.grid(column=1,row=0,sticky=N)
        else:
            self.v.grid_remove()

top = Tk()
app = App(top)            
top.mainloop()
Stevoisiak
  • 23,794
  • 27
  • 122
  • 225
mahes
  • 1,074
  • 3
  • 12
  • 20

6 Answers6

128

This code makes a window with the conditions that the user cannot change the dimensions of the Tk() window, and also disables the maximise button.

import tkinter as tk

root = tk.Tk()
root.resizable(width=False, height=False)
root.mainloop()

Within the program you can change the window dimensions with @Carpetsmoker's answer, or by doing this:

root.geometry('{}x{}'.format(<widthpixels>, <heightpixels>))

It should be fairly easy for you to implement that into your code. :)

anon582847382
  • 19,907
  • 5
  • 54
  • 57
34

You can use the minsize and maxsize to set a minimum & maximum size, for example:

def __init__(self,master):
    master.minsize(width=666, height=666)
    master.maxsize(width=666, height=666)

Will give your window a fixed width & height of 666 pixels.

Or, just using minsize

def __init__(self,master):
    master.minsize(width=666, height=666)

Will make sure your window is always at least 666 pixels large, but the user can still expand the window.

Martin Tournoij
  • 26,737
  • 24
  • 105
  • 146
4

You could use:

parentWindow.maxsize(#,#);
parentWindow.minsize(x,x);

At the bottom of your code to set the fixed window size.

1

This is a variant of an existing solution already provided above:

import tkinter as tk

root = tk.Tk()
root.resizable(0, 0)
root.mainloop()

The advantage is that you type less.

Billal Begueradj
  • 20,717
  • 43
  • 112
  • 130
1

Below code will fix root = tk.Tk() to its size before it was called:

root.resizable(False, False)
Nae
  • 14,209
  • 7
  • 52
  • 79
-2
Traceback (most recent call last):
  File "tkwindowwithlabel5.py", line 23, in <module>
    main()
  File "tkwindowwithlabel5.py", line 16, in main
    window.resizeable(width = True, height =True)
  File "/usr/lib/python3.4/tkinter/__init__.py", line 1935, in                
  __getattr__
    return getattr(self.tk, attr)
AttributeError: 'tkapp' object has no attribute 'resizeable'

is what you will get with the first answer. tk does support min and max size

window.minsize(width = X, height = x)
window.maxsize(width = X, height = x)

i figured it out but just trying the first one. using python3 with tk.

nate
  • 1
  • 2
    You're trying to use the first answer with a typo. `root.resizeable(...)` gives you the above error, try `root.resizable(...)`. – Nae Jan 17 '18 at 07:10