Mon, 15 Nov 2010

wxPython, we need to talk...

wxPython, we need to talk.

We've had some great times together, but lately I've been feeling more and more frustrated by our relationship. I don't seem to understand you the way I think I should, and you no longer seem to understand me the way I remember. Why, just last week I found myself walking the entire widget tree and calling setMinSize() on everything just to get the layout to adjust itself correctly after a change. Let's face it, that's not healthy. Has it always been like this between us? A battle of odd hacks and workarounds?

Maybe it's me. After all, we've spent many years together and I don't remember being anything but happy. Maybe my needs have changed. Maybe I never took the time to really understand you in the way that you deserve. But you've changed as well. I remember our carefree early days using wx.ADJUST_MINSIZE to get layouts behaving just so, but now it's a no-op. You say it has become the default behaviour? Then why am I walking widget trees and adjusting the min size by hand? Whatever the cause, it's clear that there's something wrong between us.

wxPython, there's no point in beating around the bush – I've found someone else. Someone who understands my needs, and who makes herself easy to understand in return.

She automatically resizes her layout managers when I change the widgets inside them; better yet, she does it recursively. She double-buffers all drawing by default, so that I don't have to resort to strange paint-event voodoo to reduce flickering to an acceptable level. And her interface builder? The best I've seen.

Oh, I know it won't be all champagne and roses. I'm already missing the years of pythonisation that have gone into your API. I miss wx.CallAfter. I miss I miss your careful refactoring of C++ namespaces and prefixes into a sensible python module structure. I don't like the way she makes me instantiate various subclasses of int to satisfy an invisible type system. And it's hard for me to leave behind my old familiar toolset.

But many of these things can be fixed or worked around, given time. I can rebuild my toolset. And frankly, for the end results I'm seeing in the time it's taking to get them, I can change.

You'll always have a special place in my heart, but it's time for me to move on. I'm leaving you.