WxPython versus Tkinter.

Bryan bryan.oakley at gmail.com
Mon Jan 24 07:33:50 EST 2011


On Jan 23, 11:31 am, rantingrick <rantingr... at gmail.com> wrote:
> On Jan 22, 6:07 pm, rantingrick <rantingr... at gmail.com> wrote:
>
> > I await any challengers...
>
> So far only trolls (besides Terry, Octavian, D'Aprano) have replied.
> In my time here within the Python community i have only met one person
> who shares my in-depth knowledge of Tkinter. That person is Kevin
> Waltzer. So outside of Python-dev and Guido. Kevin and I are are the
> ONLY people qualified to offer opinions on the worth or worthlessness
> of Tkinter. If anyone in this entire community thinks that they also
> are qualified then prove your worth by creating a ListCtrl in Tkinter
> that mirrors the wxPython ListCtrl in functionality. When you have
> done that, i will elevate you to my circle of enlightenment. Than and
> only then shall i even entertain you BS.
>
> Until then, anyone who tries to devalue my argument is just an
> ignorant troll.

I think I'm qualified, though I guess only you can tell me if I
measure up to your standards. I have 15 years or so of tk development,
though admittedly mostly with Tcl. Most recently I've spent about the
past year and a half with wxPython. For what it's worth, I am the only
person on stackoverflow.com with the "tkinter" badge, which only means
I've answered a bunch of questions on tkinter that others find
helpful, nothing more.

No offense, but your challenge is worthless, and your own entry in the
challenge is remarkably weak. About the only thing you've proven is
that wxPython has some built-in widgets that tkinter does not have,
and that wxPython makes it hard to do cross-platform development. Does
that surprise anyone? I'll give you a challenge: create a vector
graphics program. wxPython doesn't have anything that can compare to
the ease of use and power of tkinter's canvas. What does that prove?
Only that tkinter has widgets wxPython does not. I don't think that
will come as news to anyone. I could easily come up with other
challenges where tkinter shines and wxPython falls flat on its face,
but that proves nothing.

What's really amusing is that your program segfaults on linux yet is
supposed to show wxPython superiority. In my 15-20 years of tk
development, you know how many segfaults I've seen? Approximately
zero. Maybe there was one or two there somewhere, I don't know for
certain. wxPython? It segfaults on me on a weekly basis (literally,
thats not hyperbole). Which is the better toolkit? Fortunately for
wxPython, the segfaults are mostly due to coding errors (typically,
for lack of documentation). For the most part they don't happen once I
release the code.

All your challenges are going to prove is what we already know: both
toolkits have strengths and weaknesses, and neither is perfect. I'll
choose the tkinter binding event handling over wxPython any day of the
week and twice on Sundays. It is _clearly_ and _by_far_ superior in
every way. In fact, of the dozen or so toolkits I've used extensively
over the last 20+ years, nothing comes close to the power of tkinter
bindtags.

The same can be said about tkinter's pack, place and grid geometry
managers over wxPython's sizers. Tkinter wins _hands_down_. Easily.
Not even close. Does that make tkinter better? No, just easier to use
to do layout. Ultimately you can do pretty much the same thing with
wxPython, just with more (and, arguably, less readable) code.

On the other hand, wxPython clearly has more widgets. Some are very
useful for very common tasks, such as file and image browsers.
wxPython has the nice ability to draw on top of any widget, and the
aui library shows a lot of promise. I spend a little less of my time
"rolling my own" with wxPython.

If you're doing a programmers editor it's hard to beat (and hard to
program!) the styledtextctrl available with wxPython. It has features
unique to coding editors that the tkinter text editor does not. That
being said, the tkinter text editor is a marvel of simplicity and
power. A project I'm doing now with a very specialized editor would be
orders of magnitude easier to do with tkinter's text widget.

So, all you've proven is that wxPython has different widgets than
tkinter, and that it's hard to create a cross-platform GUI that looks
nice in wxPython. It would be hard (but not impossible, by any
stretch) for me to duplicate your code. Certainly, it would take more
lines of code but that's about it. OTOH, it would be very difficult
indeed to create a tkinter program that works on windows but segfaults
on linux. That's also quite hard in tkinter.

Frankly, I think a set of real-world challenges for all toolkits would
be useful. The problem is, you have no intention of staging a fair
fight. Your very first choice was to tie the hands of tkinter behind
its back, so it's hard to take your challenge seriously. If you're
serious, you'll find a disinterested third party and ask them to come
up with a handful of use cases for testing toolkits, without giving
them knowledge of which toolkits you intend to test. Anything less
will be just a bunch of grandstanding.



More information about the Python-list mailing list