My boss says we are going to be creating "some cross platform windows type apps that will be used for utilities and some user things" and he is interested in using Python. I have used Python and love it, but only with a web framework and low level scripting. I would like to gather opinions on what GUI Framework you guys think is the best for this and why so that I can research them and find out their pros and cons.

Thanks guys!

Wxpython do like very much,feel most pythonic.
Robin Dunn the main developer dos a very good jobb with wxpython.
Just look at wxpython maling list,the developers answer daily on question.
Documation and tutorials is a lot more for wxpython than PyQt and PyGTK.

Tkinter the build GUI-toolkit is ok,but the ugly look Tkinter has in windows is not ok at all for me.
Tkinter lack also some of the advance features in the other gui-toolkit.

Some program that use (wxpython/wxwxwidgets) as GUI.
Dropbox- TrueCrypt - Digsby

Thank you so much for your response
This is useful information I will take a look at these things


pygtk is the easiest to start with, especially with the help of Glade

wx the best of all.

lets start the Gui wars !

wxpython it is.

The problem with the wxPython GUI toolkit is that you are stuck using the old Python2 versions at this time.

For a simple syntax comparison of four Python GUI toolkits see:

With the advent of Python27 and Python31 (or higher) Tkinter has received an update with the ttk module, see:

Never knew wx python does not yet support python3.x because that's what i use currently, do you think that in the nearest future it will.

Never knew wx python does not yet support python3.x because that's what i use currently, do you think that in the nearest future it will.

Dont Even think about that for now. It will take some time. There is a lot of loads on the developers at the moment.

Just stick to TK if you want py3k, else you may atleast use py2.7 which goes well with wxpy2.8 and still call in the future function in into your code.

commented: good point +13

Okay, so you are saying py2.7 is the best version available now, if you want to have access to an array of modules and add-ons.
Get it.

Except if you really want faster code with psyco, which requires Python 2.6.6. So I have 2.6, 2.7 and 3.2 in my computer.

Um... I'm not very experienced, but I think tkinter looks ugly only under Linux. It looks too old and definitely not GTK-ish or QT-ish.

Under windows, on the other hand, it looks native to me .

PS. I'm talking about python 3.x and the tkinter version that comes with it and allows you to use ttk widgets.

I agree with richieking.
Also, if you want to get used to GUI programming, Tkinter is a very good tool. There are lots of code examples to learn from on the internet.

If you need to enter two numbers and do some calculations, then you can easily modify this typical Tkinter template ...

# a general Tkinter program to enter two data items
# process the data and display the result

    # for Python2
    import Tkinter as tk
except ImportError:
    # for Python3
    import tkinter as tk

def calculate():
    in this case the data items are floating point numbers 
    that are simply added in the example data process
    the result is displayed in a label
        x = float(enter1.get())
        y = float(enter2.get())
        # the process step, customize to your needs ...
        s = str(x + y)
        # display the result
    except ValueError:
        label3.config(text='Enter numeric values for x and y')

def setfocus2(event):

# create the root window
root = tk.Tk()

# create all the components/widgets
label1 = tk.Label(root, text='Enter number x:', width=28)
enter1 = tk.Entry(root, bg='yellow')
label2 = tk.Label(root, text='Enter number y:')
enter2 = tk.Entry(root, bg='yellow')
button1 = tk.Button(root, text='Add the numbers', command=calculate)
# the result label
label3 = tk.Label(root, text='', bg='green')

# pack widgets vertically in the root window in that order
label1.pack(side='top', fill='x')
enter1.pack(side='top', fill='x')
label2.pack(side='top', fill='x')
enter2.pack(side='top', fill='x')
label3.pack(side='top', fill='x')

# cursor in enter1
# return key in enter1 sets focus to enter2
enter1.bind("<Return>", func=setfocus2)

# start the event loop

Expand it to enter more than two numeric values. Something you might need for financial calculations like loans etc.

With the advent of Python27 and Python31 and higher, Tkinter has been updated with extension modules ttk and tix giving additional widgets and fancy styling options.

Okay so, tkinter is still quite okay for python 3.2, well I just want to get the basics first then.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.18 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.