Related products:
Cross-Platform GUI Programming with wxWidgets (Bruce Perens Open Source)
Python Cookbook
Beginning Python: From Novice to Professional (Beginning: From Novice to Professional)
Foundations of Python Network Programming (Foundations)
|
Java
Wxpython in Action
Format: Paperback
Author: Noel Rappin
ReleaseDate: 01 March, 2006
Publisher: Manning Publications
Rating:
Essential reading for wxPython developers
And if, like me, you were excited by the idea of quickly developing modern, robust GUI-driven applications that can run, without changes, on Windows, Mac OS X, and various UNIX-like systems, but turned off by the downright spartan and unforgiving online documentation, you can get happy again--with the publication of Noel Rappin and wxPython co-creator Robin Dunn's wxPython in Action, there is finally a cogent, coherent hybrid of tutorial and reference for wxPython that will get you out from under all that clunky Tkinter code and doing cool stuff. If, like me, you've been living under a rock (inasmuch as one can in the world of cross-platform GUI toolkits), you might not have heard much about wxPython.
Like other volumes in Manning's In Action series, wxPython presents a comfortable combination of introduction, overview, and example that encourages exploration and experimentation. The text is clear and concise, offering a no-nonsense explanation of the most relevant portions of the wxPython libraries and the best practices for their use, delivered at a measured pace that never manages to overwhelm, and uncannily launches into explanations of your questions just as they arise. Numerous reference tables provide a handy guide to the details (object properties, method signatures, events, etc. ) that you'll be coming back to in your own future development. The expanded table of contents, listing each of the "how do I. . . " subsections of each chapter, is also a nice feature that will help make this a valuable reference. Code examples are functional, clean, and on-topic, just the right size to illustrate the concept at hand, and nearly always accompanied by illustrations of the resulting behavior. All the code is available online, and it's worth your time to either download it and give it a spin, or key it yourself and see how it behaves on your OS of choice. An especially nice feature of the example code in the book is that it's well annotated, either with a brief note or a bulleted number that will be referenced in an in-depth explanation immediately following the code listing; this helps the reader quickly zero in on the essential elements of the example, and it's surprising that such a useful technique is not more frequently encountered in programming books. A few errors seem to have snuck through the editing process, though, so deeply involved readers will want the errata nearby when monkeying with example code. Manning's "Author Online" forums are also a great resource if you get stumped along the way.
The book is divided into three major sections, each six chapters long. The first, "Introduction to wxPython," is primarily a tutorial that walks the reader through the foundations of coding in wxPython-land. Newcomers to GUI programming might find certain portions a bit dense and mildly daunting--specifically chapters 2 and 3--but patience here will be rewarded with a good understanding of critically important concepts, such as wxPython's event handling model, that will be leveraged over and over again throughout the rest of the book. Chapter 4 introduces PyCrust and other tools from Patrick O'Brien's Py library that you can use for interactive debugging or even reuse within your own wxPython applications. Chapter 5 is a real gem, providing an excellent discussion and practical walkthrough of the refactoring process, an exploration of the benefits of the Model-View-Controller pattern and how to do MVC in wxPython, and illustrates how to unit test your wxPython app; these are non-glamourous topics that help aspiring developers grow into good professionals, and this is a perfect place to see these topics. Chapter 6 presents the construction of a simple but fairly polished toy sketch application, a satisfying achievement that nicely rounds out the introductory section.
The second section, "Essential wxPython," begins the more reference-oriented material, covering (unsurprisingly) the essential widgets of the wxPython toolkit: text labels, text entry, buttons, checkboxes, and the like in Chapter 7; frames (what most of us think of when they think of "windows") in Chapter 8; dialogs in Chapter 9; various flavors of menus in Chapter 10; the ins and outs of sizers in Chapter 11; and basic graphics manipulation (putting images on the screen, customizing the cursor, etc. ) in Chapter 12. Each subsection builds logically on the one that came before it, and likewise each chapter follows from its predecessor, introducing new widgets just as you're ready for them. The text here is significantly lighter than in the first few chapters, so this reads fairly quickly.
The third section, "Advanced wxPython," covers some more complicated widgets and topics that probably won't be day-to-day concerns but which are important enough that, when you need to know about them, they're covered in the book: list controls (think Windows Explorer or Macintosh Finder) in Chapter 13; grid controls (think spreadsheet applications) in Chapter 14; the tree control (think file system trees, or registry editors) in Chapter 15; HTML widgets (a great idea for a help facility in your applications) in Chapter 16; the wxPython printing framework in Chapter 17. Finally, Chapter 18 rounds things out with a grab-bag of other topics that didn't merit their own chapters but which are good to know about anyway: using the clipboard, managing drag and drop operations, timers, and threading issues.
To be fair, there are a few imperfections here, but they mostly amount to personal nit-picking. While it's probably not essential, there's no discussion of sound or other multimedia functionality; and from a structural standpoint, the book would have benefitted from a brief afterword to launch the reader into further reading or development activity. Finally, and this might be slightly unfair as I'd just finished reading one of O'Reilly's Head First books when I picked up wxPython in Action, this book could probably use a little more personality; when the occasional editorial comment sneaks through, it's a welcome break from the readable but positively arid expanses of text and examples.
That said, there's obviously still a lot here to love. wxPython is clearly the way to build cross-platform GUI apps in Python; even Guido van Rossum, Python's creator and benevolent dictator, advocates it, saying, "wxPython is the best and most mature cross-platform GUI toolkit. . . the only reason wxPython isn't the standard Python GUI toolkit is that Tkinter was there first. " wxPython in Action is clearly the authoritative resource on the subject, a great introduction that will also serve as an excellent reference for years to come. Recommended for wxPython n00bs and gurus alike.
VERY VERY HIGHLY RECOMMENDED!!
Authors Noel Rappin and Robin Dunn, have done an outstanding job of writing a book that is more of a useful resource than the existing online documentation. If you are familiar with the Python programming language, this book is for you.
Rappin and Dunn, begin by introducing wxPython and give some background on the technologies used to create wxPython. Then, they show you how to start a wxPython program, and how to manage its lifecycle. The authors continue by discussing how events are handled, and how you can use them as hooks to drive your functionality. Next, they show you how to make wxPython easier to handle with PyCrust. Then, the authors discuss best practices in three areas that are often difficult for GUI programmers. The authors continue by showing you how to work with the basic building blocks. Next, they cover the API for the basic widget set, including text fields, buttons, list boxes, and the like. Then, the authors cover how frames work, what kind of frames there are, and how to manage widgets within a frame. They also cover how modal dialog boxes work, as well as the standard predefined wxPython dialogs. The authors continue by showing you how to add menus to the menu bar, and menu items to a menu. Next, they show you how to use widgets with sizers, and what kind of layout is best suited to each. They also show you how to manipulate basic graphical images. The authors continue by showing you how to build list controls and managing items. Then, they show you how to coordinate the grid control. Next, they show you how to climb the tree control. Next, they show you how to incorporate HTML into your application. They also explore how all print, print data, and print preview objects work together. Finally, they cover some important features that are not quite long enough to justify a chapter on their own, including cut and paste, drag and drop, and multithreading.
How you use this most excellent book will depend on your wxPython knowledge. The authors designed the book to be useful for both experts and novices, but they expect that different parts of the book will have more or less resonance for users at different levels.
.
Well-written, complete, excellent resource
Not ony did this book document things that are obscure or inexistant in the current docs, but it is presented in an easily digestable fashion that makes it really easy to get up and write your own program. The documentation for wxPython being lacking, I figured I'd buy this book to fill in the gaps. The book is split into three main parts, introduction to wxPython, essential wxPython, and advanced wxPython. The intro discusses the origins of wxPython, how to set up an application, add frames (windows), set up events, and work with common dialogs. The second part goes into detail regarding each of the standard widgets. There's a good thirty pages on using sizers, info that I found invaluable. The last part discusses advanced wxPython subjects, including using grids and trees, using the printing framework, threading, and drag and drop.
The format is quite pleasing. For the sections on the various widgets, there is usually a short intro, a few code examples, a table that shows the main API methods for the widget which is more useful than the online docs, and quite a few screenshots throughout. The code itself is usually short, to the point, and at most a page long, so it doesn't try to show 10 things at the same time and it's easy to copy-paste (if you have the ebook version, also available) into your own programs. As the previous reader said, it's easy to see that this was written by one of the authors of wxPython. Despite being written by an expert, it didn't skim over some of the seemingly obvious but confusing for a beginner things in the package. For example, the book will tell you how to redirect "print" output to the console instead of a separate window (answer: use App(false) when instantiating your app), what's the difference between a Frame (window) and a Panel anyway (answer: panel allows tabbing), why you don't need a panel when using a dialog (answer: tabbing is already built in), why there's no 'pack' or 'appendToDisplayList' anywhere (answer: the first argument in a widget gives the parent and the framework automatically adds it to the display list), and a whole bunch of other little things.
There was one thing I thought was missing however, and that is a chapter on maintaining portability across platforms (especially with regards to sizing). Apart from that, the book is flawless, highly recommended!.
|
|