Start New Discussion within our Software Development Community

While the calculation of the total resistance of two resistors in parallel is simple, this code shows you how to trap a number of potential errors that come with the entry of the required data. All is wrapped easily into a colorful GUI program, due to the simplicity of the Tkinter module. The GUI contains two data entry boxes, two labels for user instructions, one label to show the calculated results, and a button to start the calculation defined in the function. This could easily be a GUI template for other calculations that need two data inputs. Remember that Tkinter works with Windows, Linux and the Mac OS-X.

# a GUI program to calculate the parallel resistance of two resistors using Tkinter
# tested with Python24      vegaseat      22jul2005

from Tkinter import *

def calculate():
    """ calculate the resistance of two resistors in parallel """
    try:
        r1 = float(enter1.get())
        r2 = float(enter2.get())
        if r1 + r2 > 0:
            rp = (r1 * r2) / (r1 + r2)
            label3.config(text='Parallel resistance = '+ str(rp))
        else:
            label3.config(text='division by zero error')
    except ValueError:
        label3.config(text='Enter numeric values for r1 and r2')

def setfocus2(dummy):
    enter2.focus_set()

        
# create root window
root = Tk()
# create all the components
label1 = Label(root, text='Enter value of resistor1:', width=28)
enter1 = Entry(root, bg='yellow')
label2 = Label(root, text='Enter value of resistor2:')
enter2 = Entry(root, bg='yellow')
btn1 = Button(root, text='Calculate', command=calculate)
label3 = Label(root, text='', bg='green')
# pack 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)
btn1.pack(side=TOP)
label3.pack(side=TOP, fill=X)
# cursor in enter1
enter1.focus()
# return key in enter1 sets focus to enter2
enter1.bind("<Return>", func=setfocus2)
# start event loop and program
root.mainloop()
The article starter has earned a lot of community kudos, and such articles offer a bounty for quality replies.