Practical Gui Toolkit

Practical GUI toolkit?

I would go with Qt. It works on all the major platforms, and it's being continually improved. You can also get started really fast.
There are bindings for Java, Ruby and Python.

Plus it's free if you're writing open source programs.

Most Natural GUI Toolkit

What GUI toolkits have you seen that most beneficially influence the programmers that use them?

My own, developed based on experience with computer science and the specific needs of the industry I develop for. In short there is no magic bullet just tools that you have to use experience and judgment with. What works for my CAD/CAM software, is not going to work for a web developer's website, nor for a developer of office software, and so on.

What level of separation (between user-interface and implementation) do you find most efficient for testability and usability?

For traditional applications that run on the desktop of a computer I recommend variants of the Passive View. The class responsible for creating and managing the form is a thin shell that passes events to the UI Object. The UI_Object interact with the form via a interface. In term the UI Object implements a UI_View Interface and registers itself with a View Controller that is situated lower in the object hierarchy.

The UI_Object then execute object implementing the Command Pattern which modifies the model. The command object can interacts with the various views via the interfaces exposed by the View Control.

What this does is allow you to rip off the form classes and replace them with stub classes that implement the form interfaces. The stub classes are used for automated testing especially for integration tests.

The interfaces precisely define the interaction between the Form, the UI_Object, Commands and the views. They can be designed to be relatively language agnostic so they can make porting between platform easier.

I am not as proficient with programming for the web but there are related patterns that accomplish the same thing.

I have to also caution that Passive View can be overkill. You may not want to use it for simple setup dialog (like the dialog setting up serial port parameters). This a judgment call on whether the ease of maintenance and coding is worth the added testing time. If a dialog is only called by a single command to modify some setup parameters then it is a good candidate to have it defined within the command itself.

Finding out with GUI toolkit was used?

If the program runs on MS-Windows, Dependency Walker allows you to find out which libraries the program requires. The required libraries might give you a hint about which GUI toolkit was used.

On other platforms, ldd is often available and gives you similar information.

This only works if the GUI toolkit is dynamically linked.

Basic GUI for Python?

If you are working with scientifical data you should check Traits and Traits UI

The Traits UI package is a set of user
interface tools designed to complement
Traits. In the simplest case, it can
automatically generate a user
interface for editing a Traits-based
object, with no additional coding on
the part of the programmer-user. In
more sophisticated uses, it can
implement a Model-View-Controller
(MVC) design pattern for Traits-based
objects.

It comes in the enthough python edition together with other, more conventional, modules for data representation (ie matplotlib) storage (ie pyTables...) and gui building.

Getting started w/ Python on the desktop

  1. wxPython is the best GUI framework.
  2. The official docs are the best resource. They helped me quite a bit.

GUI Toolkit with Good Designer for Python

I'd try PySide (LGPL binding for QT) with QT Designer

Cross-platform GUI language/toolkit

  1. It depends on your needs. But in general Qt Framework (with any language) and Java SE (with any language) is much more better because it has not only cross-OS GUI libraries but also cross-OS networking, threads, ... wxWidgets is GUI only.
  2. Both Qt and wxWidgets are nice. In my experience Qt is better. Swing is... Well, not so nice.
  3. Both Qt and wxWidgets applications written in C++ and Java Swing applications are not so hard to deploy on Windows, Mac and Linux. The rule is that the deployment is simple when you are programming in "native" language. By "native" language I mean the language a framework itself is written in.

PyQt does not meet the "easy deployment' requirement in any practical sense...

Python (and any other language with the default implementation as interpreter) apps is hard to deploy in the usual sense (I mean in form of standalone executables).

So probably you have 2 choices:

  1. C++/Qt or C++/wxWidgets.
  2. Java/Swing if native look & feel is not very strict requirement.


Related Topics



Leave a reply



Submit