I'm trying to center a tkinter window. I know I can programatically get the size of the window and the size of the screen and use that to set the geometry, but I'm wondering if there's a simpler way to center the window on the screen.
You can try to use the methods
winfo_screenheight, which return respectively the width and height (in pixels) of your
Tk instance (window), and with some basic math you can center your window:
import tkinter as tk def center(toplevel): toplevel.update_idletasks() w = toplevel.winfo_screenwidth() h = toplevel.winfo_screenheight() size = tuple(int(_) for _ in toplevel.geometry().split('+').split('x')) x = w/2 - size/2 y = h/2 - size/2 toplevel.geometry("%dx%d+%d+%d" % (size + (x, y))) if __name__ == '__main__': root = tk.Tk() root.title("Not centered") win = tk.Toplevel(root) win.title("Centered!") center(win) root.mainloop()
I am calling
update_idletasks method before retrieving the width and the height of the window in order to ensure that the values returned are accurate.