For some reason the "transient()" is not enough to center the window.
I was looking the code of the msgbox.tcl (Messagebox)
and there is a command
::tk::PlaceWindow $w widget $data(-parent)
Using this command it centers the dialog e.g.

root = tk.Tk()
t2 = tk.Toplevel(root)
t2.transient(root)
tk.Label(t2, text='This is a transient window of root').pack(padx=10, pady=10)
# root.tk.call("::tk::PlaceWindow", t2, "widget", root)
root.mainloop()

as is the dialog is centered wrt the screen,
when you uncomment the PlaceWindow command it is properly placed on top of the 
root window


________________________________
From: Tkinter-discuss 
[tkinter-discuss-bounces+vasilis.vlachoudis=cern...@python.org] on behalf of 
Vasilis Vlachoudis [vasilis.vlachou...@cern.ch]
Sent: Tuesday, February 22, 2022 09:42
To: tkinter-discuss@python.org
Subject: [Tkinter-discuss] How to center tkDialog

Hi all,
when using the tkDialogs.Dialog(), it always appears centered in the screen
and not as on-top/transient of the master window.
In contrast with the other dialogs it doesn't seem to respect the
parent=

any ideas on how to center it?

Vasilis
_______________________________________________
Tkinter-discuss mailing list
Tkinter-discuss@python.org
https://mail.python.org/mailman/listinfo/tkinter-discuss

Reply via email to