Bugs/issues in tkinter.simpledialog!!

Giampaolo Rodolà g.rodola at gmail.com
Fri Jan 28 09:52:55 EST 2011


2011/1/26 rantingrick <rantingrick at gmail.com>:
>
> I just installed Python 3,0 on my machine. I cannot use 3.0
> exclusively yet however i was interested in just poking around and
> acquiring a taste if you will. I was happy to find that the new
> Tkinter module names now follow convention and are placed correctly...
> example: "tkinter.simpledialog"
>
> However some things never change it seems and some improvements are
> actually a step backwards. The same problems with the unit test in 2.x
> got ported to 3.x. And the new SimpleDialog is just more lackluster
> code like we've seen before. I was hoping to be amazed, i am
> disappointed and disgusted. It is obvious that whoever is writing/
> maintaining the tkinter code base does NOT understand tkinter
> completely and this is blinding apparent by reading the source code!
>
> -----------
>  Issues
> -----------
>
> First lets start with the problems that migrated from 2.x...
> (tkinter.simpledialog)
>
> #-- ISSUE 1 --#
> In the test() function we still have code that uses the "quit" method
> instead of "destroy". Calling the "quit" method only tells Tkinter to
> stop processing events, IT DOES NOT DESTROY THE WIDGET!! And on
> windows the the root will then become unresponsive -- you cannot close
> the window, you cannot do anything. I have said time and time again.
> DO NOT USE THE QUIT METHOD UNLESS YOU KNOW WHAT THE HECK YOU ARE
> DOING! So the code needs to be this...
>
> OLD:
>   q = Button(root, text='Quit', command=t.quit)
>
> NEW:
>   q = Button(root, text='Quit', command=root.destroy)
>
>
> #-- ISSUE 2: --#
> The author used a very strange method by which to denote the default
> button in the SimpleDialog class. He choose to set the relief to RIDGE
> and the border "8". This not only looks horrible (and exposes the
> authors ignorance of tkinter) but a much more elegant solution is
> provided by the TclTk folks. All buttons have a "default" option that
> will display the button with a nice border so the user can visually
> see which button is active. So the code should be this....
>
> OLD:
>            if num == default:
>                b.config(relief=RIDGE, borderwidth=8)
>
> NEW:
>            if num == default:
>                b.config(default=ACTIVE)
>
>
> Last but not least i am puzzled as to why we choose the method name
> "go" over "show". for "showing" the dialog.  SimpleDialog uses no
> inheritance so name clashes are mum. Why would anyone choose "go" over
> "show" for a modal dialog? I would really like an explanation for
> this.
>
>
> Other minor issues exists. I may describe them later. At this time we
> need to fix these grave abominations first.
> --
> http://mail.python.org/mailman/listinfo/python-list

Why don't you file a ticket on the bug tracker instead of wasting
yours and other people's time here by making appear another rant
against Tkinter as a bug report?
It's been 3 days in a row you've been doing this. Aren't you tired?
Seriously! This has come to not even being a rant anymore. It's just nonsense.


--- Giampaolo
http://code.google.com/p/pyftpdlib/
http://code.google.com/p/psutil/



More information about the Python-list mailing list