[PythonCE] Seeking alternative to wxPython

Mark Hammond mhammond at skippinet.com.au
Tue Aug 22 06:02:46 CEST 2006

> When I embarked on my programming project, I had hoped that
> my choice of
> wxPython would make it possible for me to run my program
> without too much
> difficulty on Linux, Win XP, Win Mobile, and OSX, but so far
> I have not been
> able to get it to run reliably on even one platform, least of
> all winCE.  I
> had high hopes for the port recently announced by Ingmar
> Steen, but so far,
> at least, it suffers from the same problems that the earlier port had
> (although many other things are working better).  Even the
> version that runs
> on XP has problems that don't seem to be getting resolved.

If you are having problems with Windows XP, it would be brave to hope that
Windows CE would have *less* problems <wink>.

> I have seen references here to Pythonwin, but I am not
> familiar with it.  I
> gather that it contains the module win32gui and, if I
> understand correctly,
> that module provides an interface to the MFC routines for
> creating a GUI.

Pythonwin and the win32ui module are MFC wrappers, and I suspect you will
have some problems getting these to work on CE.  The win32gui module (poor
module names, I know...) wraps the native win32 GUI api and does not rely on
MFC at all.  As a result, it is fairly low-level, but is also less likely to
get in your way too much.

> I
> understand that wxPython uses native routines to actually draw the GUI
> elements, so if I am reasoning correctly it follows that
> wxPython is calling
> the same routines that I could call directly using win32gui.
> Thus, I should
> be able to do with win32gui anything that I am doing with
> wxPython

That is true to some extent - although the effort may be significantly more
than you expect.  I believe the widget set in wx is larger than Windows
itself provides - which would mean wx implements these widgets itself using
the 'lower-level' widgets (or even just the low-level drawing routines) as a
framework.  You theoretically could reimplement all such widgets using
win32gui - but depending on the widget, that would be very difficult.  In
some cases, win32gui may not be complete enough to do everything - it
doesn't cover *all* win32 GUI functions (but does cover the majority of the
useful ones)

> win32gui is not complete.  What I lose by using win32gui rather than
> wxPython is portability, but perhaps I would have better luck
> getting the
> program to run reliably on winCE.  Is this reasoning correct?

It depends on exactly what your program needs to do.  Without knowing why wx
fails on CE for you, I can't speculate if the same thing would be any easier
using win32gui.

> It looks as if the best documentation for Pythonwin is the
> book by Mark
> Hammond and Andy Robinson, but I note that it was published
> over 6 years
> ago.  Is it still sufficiently current to be useful? Does anyone know
> whether a new edition is scheduled to appear soon?

The book doesn't cover win32gui in any detail at all - it does cover
Pythonwin/win32ui in some detail, but that isn't what you want to use.  We
are starting work on a new edition this year, but that is unlikely to cover
win32gui in any detail - the point of win32gui is a thin wrapper around the
windows API, and the intent of the book is not to document that API.
Similarly, the documentation that does existing for Pythonwin/win32ui
doesn't attempt to be a tutorial in MFC programming - Microsoft already has
lots of documentation on that.

> Is there more current documentation somewhere?

As above, given it is a thin wrapper, the only Python relevant documentation
covers things like argument and return-value handling.  There will be no
attempt (by me) to write a tutorial on low-level win32 UI development.

> Does Python Programming on WIN32 do
> an adequate
> job of explaining how to build GUIs using win32gui, or do I need
> documentation for the relevant portion of MFC as well?

The latter.

> I hate the thought of rewriting my code again for a different
> GUI library.
> I was happy using Qt on a Sharp Zaurus running Linux, but when Sharp
> withdrew the Zaurus from the US market I could not find a suitable
> substitute.  The only alternative I can think of in my
> current dilemma is to
> try to fix the bugs in the wxPython port myself, but I doubt
> that I have the skill.

If you can't get a Windows XP version working the way you want, I suspect
you have a lot of work ahead of you to get a CE version working the way you
want.  If your only problem was that the CE port failed in some fundamental
way (eg, failed to load), then I expect it would be a much simpler thing to
fix.  I've no real wx experience though.

Sorry I can't offer more concrete advice, but I hope this helps anyway...


More information about the PythonCE mailing list