tags:

views:

443

answers:

10

I have a pretty good knowledge of programming languages like C/C++, Java, Python. But they were all mostly learnt in a college / high school class room setting where the best user interface was a numbered menu. You know, the standard data structures, implementation of various algorithms, file handling and the like.

What I want to do now is to get into GUI programming. I am not sure if I am asking the right way, but I am looking at using the WIMP paradigm (windows icons menus pointers). I want to place buttons and forms. Event driven programming, I believe is the right word, where my application waits till the user clicks something, types something etc.

Given my background, where would be a good place to start? I am looking at the following requirements -

1> Preferably cross platform. 2> Lots of documentations, tutorials, and if possible sample code that I can learn off of 3> A good GUI builder tool, where I can drag / drop stuff the way I want them to be displayed.

Any ideas or suggestions to get me started?

A: 

I would look into C# .NET development and its WinForms API. It's much easier to program GUI desktop apps for Windows with that than with the Win32 API. You can always ease into Win32 API stuff later, if it's still relevant.

For cross-platform solutions, look into Gtk+, perhaps PyGtk. Another good one is WxWidgets.

If you want to get really funky, check out Shoes for Ruby.

Parappa
A: 

Many years ago, I made the quickest progress in this area using Visual Basic. I assume it's still dead easy to pick up and the code/run/debug cycle is insanely productive and you'll learn a lotta useful stuff fast. Tons of documentation, and all the other goodies you want...

Scott Evernden
+2  A: 

Shoes for Ruby is cross platform, very easy, and is a brief introduction to building a window and handling events that happen in it. fun too :)

Kevin Conner
I'm all out of votes, but i'm going to come back and vote this up :)
Aeon
+1  A: 

I was thinking exactly the same thing recently. Qt seems like a good cross platform GUI framework, and Python seems like a good language to work in.

So PyQt is my (uneducated) suggestion. It does include a drag and drop GUI design tool.

therefromhere
A: 

Seeing as you already have knowledge of Java you should check out the Swing API here, it provides a pretty powerful set of packages that can be used to create complex GUI's. Moreover, its cross platform, there's tons of documentation and it can be used with the Netbeans IDE.

Ed Brown
A: 

Java's Swing API is cross platform and relatively simple, and NetBeans is a good GUI builder.

perimosocordiae
+2  A: 

You're looking for Qt. It's a cross-platform C++ GUI framework, and it includes everything you asked for and more.

It's free for open-source projects to use, provided you're using the GPL.

Branan
+3  A: 

I'l try the book About face: Essential of User Interface Design, its centered on design practices for UI as well as designing taking into account the user goals, that is, what the user wants to acomplish trying to get you away for the "developer GUI design".

It also reviews some history about GUI design from Microsoft, Apple and other companys. Things like defaults for MacOsX (where the accept and cancel buttons are usually located, etc) as well and the whys beneath that.

I'll also look up the Office 2007 UI Design Guidelines for Microsoft as it's probably "gonna be a thing".

Jorge Córdoba
A: 

Take a look at Glade and Gtk. Both are really easy to use. Glade is the GUI builder, and Gtk the toolkit. It's both cross platform and cross language. You can load the Glade files in almost any language. Here is a Glade/Gtk tutorial

Peter Stuifzand
+1  A: 

There is a great deal of language and UI framework specific resources available for people interested in building application UIs. However, before delving into specific technologies, there is much to be learned about Human-Computer Interaction and how it applies to user interface design. Some references to look at:

After researching what makes a good UI, it is time to explore how:

Of course there are many options out there, including QT, Fltk and SWT

Ryan Delucchi