tkinter window geometry

Eric Brunel eric.brunel at N0SP4M.com
Mon Nov 24 04:17:17 EST 2003


Zora Honey wrote:
> 
> I realized after I posted that the window manager would be important. 
> I'm on RedHat 7.1, KDE 3.0.
> 
> Neither the switch to getting the geometry through the geometry call or 
> doing an update_idletasks (which I had tried before posting) works on 
> their own, but together they seem to be working.  Apparently I just 
> didn't hit on the right combination.
> 
> Now, if someone can tell me how I can get this to work on a Toplevel 
> without having the window manager flash the "default" geometry and then 
> redrawing it with my specified geometry, I would be a very happy camper.

This will be more trouble... You can try to do a root.withdraw() just after 
creating the root window and a root.deiconify() just before running the 
mainloop, but it seems it messes up things a bit: if I do that, closing the 
window and re-running the script opens the window a bit too low and a bit too 
right. So doing many close/run in succession makes the window go slowly towards 
the bottom right corner. Apparently, some window decorations from the window 
manager are not taken into account by the geometry method when the window is 
withdrawn. Too bad... If anybody has a solution for this, I'll be glad to hear 
it too.

> P.S. To Eric Brunel--thanks for your other fixes.  The "real" code does 
> check for a file and specify an exception--this was just a copy pared 
> down enough for posting :)  I will take the root.quit() under 
> advisement.  Can you explain why it is "better" than just exiting the 
> process?

First, it certainly leaves things more cleanly on the tcl/tk level than a 
"violent" sys.exit. Second, it allows you to put some clean-up code behind your 
root.mainloop() call. This code will then always be executed if you do a 
root.quit(); it won't if you do a sys.exit(). You can actually achieve the same 
goal by putting a try/finally around your main script, but quitting the main 
window is the normal way to close a Tkinter application.

HTH
-- 
- Eric Brunel <eric dot brunel at pragmadev dot com> -
PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com





More information about the Python-list mailing list