wxWidgets and GUI’s
In our post “Where’s the Graphics? Learning from our Roots (Tcl / Tk)” we focused on Tcl/Tk as a primary GUI development language. We also mentioned QT as a viable alternative. QT provides a more powerful GUI development API when compared to Tcl/Tk, however, the licensing schema for QT is also more complex.
To paraphrase the description from the wxWidgets website, wxWidgets is a C++ library that includes bindings for C++, Python and other languages to create cross-platform applications for Windows, Mac OS X, Linux, and more.
wxWidgets is available free of charge and offers a comprehensive collection of widgets that make it ideally suited for advanced GUI intensive applications. By using the native platform API, wxWidgets provides a native look and feel to your applications.
The latest version of wxWidgets is 3.0.2 as announced in the latest news release dated October 6, 2014.
Thanks to wxPack, we’ve expanded our list of cross-platform GUI’s to include wxWidgets. wxPack greatly simplifies the task of installing and setting up wxWidgets on your machine. wxPack is a full wxWidgets Development Kit, complete with wxWidgets source and binaries, wxFormBuilder (RAD Tool), and more. Without wxPack, installing wxWidgets is a task best left to more seasoned developers.
From a development perspective, wxFormBuilder is the tool that ultimately caught our attention. More specifically, wxFormBuilder offers the following features that are ideally suited to our language base and development environments:
- Visual design of wxWidgets dialogs, frames, panels, toolbars and menubars
- Source code generation for C++, Python, PHP, Lua and XRC
- Support for wxWidgets 3.0 widgets (wxRibbonBar, wxPropertyGrid, wxDataViewCtrl, …)
Selecting Your GUI Tool Kit
The wealth of information available to learn and implement Qt suggests it is one of the better supported GUI tool kits in general. TKinter (Tcl/Tk) is also well supported due to it’s inclusion with the standard Python distribution. Regardless of the tool kit chosen, the initial learning curve can be rather steep for more complex applications. The number of widgets and options available with each package only add to the challenge of which package to choose.
Keeping it Lean
Too many options can make for more complicated interfaces than are necessary to meet the needs of the application and it’s end users. For Python, TKinter provides a minimal widget set that serves the majority of our requirements. That it’s already included with the standard Python distribution makes TKinter an even more convenient and attractive option.
There are times where a higher level of complexity and sophistication is necessary. Of course, to learn every GUI kit available isn’t an option available to everyone. The wealth of information and code samples available for QT make it a highly regarded option.
wxWidgets may just be the Goldilocks solution, falling somewhere between simplicity and sophistication where the tools available make it “just right” to get the job done. A quick review of the wxWidgets Class List suggests there are more than enough features to develop a robust GUI for your application.
Ultimately, the right choice is the tool kit that is both effective and efficient for the given application. Simplicity serves the purpose best especially during rapid development cycles and iterations.
Your feedback matters
If you have any comments, questions, or topics you would like us to address, please feel free to leave your comment in the space below or email us at firstname.lastname@example.org or email@example.com. We look forward to hearing from you and thank you for visiting.