Which Graphics User Interface (GUI) would you recommend for a beginner? I have seen some examples of Tkinter, wxPython and GTK.

10 Years
Discussion Span
Last Post by vegaseat

As a beginner, start working with Tkinter to get a feeling what GUI programming is all about. Tkinter is already present in the normal Python installation. If you need fancier widgets later, download wxPython and experiment with that. PyGTK/GTK works best with Linux, the Windows version needs a lot of additional downloads and the installation process is cumbersome.


I will check Tkinter programming first. Any examples that show the difference between console and GUI programming?


Here are simple programs. The console version:

# console sales tax program

while True:
    price = float(raw_input("Enter purchase price: "))
    # prevent division by zero error
    if price != 0:
        print "price can not be zero!"
tax = float(raw_input("Enter sales tax paid: "))

percent = 100 * tax / price
print "You paid %0.3f%s sales tax" % (percent, '%')

Now the Tkinter GUI version:

# Tkinter sales tax program

from Tkinter import *
import tkSimpleDialog

# the basic window
root = Tk()
# create label for result
label1 = Label(root)
# position the label in window
label1.grid(row=0, column=0)
# ask for needed data with dialog window
# the askfloat dialog window makes certain you entered floating point value
# and also prevents you from entering zero which would give divide by zero error
price = tkSimpleDialog.askfloat("Price", "Enter purchase price:", parent=root, minvalue=0.01)
tax = tkSimpleDialog.askfloat("Tax", "Enter sales tax paid:", parent=root)
percent = 100 * tax / price
result = "You paid %0.3f%s sales tax" % (percent, '%')
# display result string in label1
# event loop needed by GUI, checks for mouse and key events

Here is the Tkinter sales tax program without the dialog popups ...

# a rather generic Tkinter GUI template for calculations
# uses Entry() for data input and Button() to start calculation

from Tkinter import *

def calculate():
        # get the enter1 and enter2 values
        price = float(enter1.get())
        tax = float(enter2.get())
        # do the calculation
        percent = 100 * tax / price
        result = "You paid %0.3f%s sales tax" % (percent, '%')
        # display the result string
    except ValueError:
        label3.config(text='Enter numeric values!')
    except ZeroDivisionError:
        label3.config(text='Price can not be zero!')

root = Tk()
# window geometry is width x height + x_offset + y_offset

# first entry with label
label1 = Label(root, text='Enter purchase price:')
label1.grid(row=0, column=0)
enter1 = Entry(root, bg='yellow')
enter1.grid(row=1, column=0)

# second entry with label
label2 = Label(root, text='Enter sales tax paid:')
label2.grid(row=2, column=0)
enter2 = Entry(root, bg='yellow')
enter2.grid(row=3, column=0)

# do the calculation by clicking the button
btn1 = Button(root, text='Calculate Percent', command=calculate)
btn1.grid(row=4, column=0)

# display the result in this label
label3 = Label(root)
label3.grid(row=5, column=0)

# start cursor in enter1
# value has been entered in enter1 now switch focus to enter2
enter1.bind('<Return>', func=lambda e: enter2.focus_set())

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.