Hi,

I have a similar issue, however not for common dialogs but for a custom toplevel transient dialogs.

As you create your dialog it's dimensions are not known until all idletasks have completed for child widgets being added to the dialog.

Now if you call top.widthdraw() before adding the children, the dimensions of the toplevel is not calculated.

e.g.
class MyDialog(TopLevel):
    def __init__(self, parent=None, title=None):
        TopLevel.__init__(self, parent)

        self.title(title)
        self.parent = parent
        self.BuildGUI(master=self)

        self.CenterDialog()

        self.transient(parent)

    def BuildGUI(self, master):
        # Add widgets here frames etc...
        pass

    def CenterDialog(self):
        self.update_idletasks()
        w= self["width"]!=0 and self["width"] or self.winfo_width()
        h= self["height"]!=0 and self["height"] or self.winfo_height()
        ws,hs = self.winfo_screenwidth(),self.winfo_screenheight()
self.geometry('%dx%d+%d+%d' % (w, h, (ws/2) - (w/2), (hs/2) - (h/2)))


When above is called, my new toplevel is created, BuildGUI adds all the
widgets and the toplevel is displayed, however when CenterDialog is called the toplevel jumps to new centered geometry.

Placing self.withdraw() before self.BuildGUI() and then placing
self.deiconify() after self.CenterDialog() I thought would do the trick.
But I end up with a width and height of 1 in CenterDialog(), withdraw
somehow stops calculation taking place. iconify has same effect as withdraw.

Any ideas what I am doing wrong ?

thanks

Matt
        

On 10/26/10 06:10 PM, pyt...@bdurham.com wrote:
Firat,
 > You can create a new toplevel window in the middle of the screen,
then make it invisible and position the dialog windows relative to this
new toplevel... Like this: http://paste-it.net/public/q2a5594/
Thank you very much for your solution - that's an excellent workaround
for me.
Best regards,
Malcolm



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

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

Reply via email to