67 lines
1.9 KiB
Plaintext
67 lines
1.9 KiB
Plaintext
From: chad at vision.arc.nasa.gov (Chad Netzer)
|
|
Date: Wed, 07 Apr 1999 13:37:43 -0700
|
|
Subject: Tkinter and centering
|
|
References: <370B88CF.993D8847@yahoo.com>
|
|
Message-ID: <370BC217.FFF53A35@vision.arc.nasa.gov>
|
|
Content-Length: 1625
|
|
X-UID: 354
|
|
|
|
Flbill Blipf wrote:
|
|
|
|
> Hi,
|
|
>
|
|
> How do I center a window with Tkinter? If I use this:
|
|
|
|
[Clipped]
|
|
|
|
>
|
|
>
|
|
> The window appears in a semi-random location and then staggers to the
|
|
> center.
|
|
>
|
|
> If I remove root.update(), winfo_width and winfo_height both return 1.
|
|
|
|
Well, I don't know if you can ever get the window width and height without
|
|
first mapping it (displaying). One option is to open it completely off the
|
|
screen, then update it to the center, but I think many window managers
|
|
won't do this (it might work on Windows, but not in Motif, etc.)
|
|
|
|
Another option is to open the window as centered as possible, then update
|
|
to the more correct position, which may be less disconcerting. For example:
|
|
|
|
from Tkinter import *
|
|
|
|
root = Tk()
|
|
Label(root,text="Cough Cough Cough").pack()
|
|
sw = root.winfo_screenwidth()
|
|
sh = root.winfo_screenheight()
|
|
w = 120
|
|
h = 30
|
|
newGeometry='+%d+%d' % ((sw/2)-(w/2), (sh/2)-(h/2))
|
|
root.geometry(newGeometry=newGeometry)
|
|
root.update()
|
|
w = root.winfo_width()
|
|
h = root.winfo_height()
|
|
newGeometry='+%d+%d' % ((sw/2)-(w/2), (sh/2)-(h/2))
|
|
root.geometry(newGeometry=newGeometry)
|
|
root.mainloop()
|
|
|
|
|
|
Here, the initial height of 30 and width of 120, is just a rough estimate, but
|
|
is pretty close on my machine. At least the window comes up near the final
|
|
resting place. :) You could also just leave initialize width and height to 1,
|
|
but the movement is a bit jarring.
|
|
|
|
Hope this helps a bit; I don't know if you'll be able to get exactly what you
|
|
want, unless you hard code the window sizes (which can be a mess). Using
|
|
'wm_minsize' option may be a slight help.
|
|
|
|
Chad Netzer
|
|
chad at vision.arc.nasa.gov
|
|
|
|
|
|
|
|
|
|
|
|
|