for the tkinter scale widgets we give them parent of self as usualand associate variable with each one in additionwe give function (or in this case methodobject reference as their command--this method will be called automatically whenever the scale' value is changedand set its minimum (from_with trailing underscore since plain from is keywordand maximum (tovaluesand horizontal orientation for some of the scales we set resolution (step sizeand for the ratescale the number of digits it must be able to display the actualamountlabel is also associated with variable so that we can easily change the text the label displays later on we have also given this label sunken relief so that it fits in better visually with the scales principallabel grid(row= column= padx= pady= sticky=tkinter wprincipalscale grid(row= column= padx= pady= sticky=tkinter ewratelabel grid(row= column= padx= pady= sticky=tkinter wratescale grid(row= column= padx= pady= sticky=tkinter ewyearslabel grid(row= column= padx= pady= sticky=tkinter wyearsscale grid(row= column= padx= pady= sticky=tkinter ewamountlabel grid(row= column= padx= pady= sticky=tkinter wactualamountlabel grid(row= column= padx= pady= sticky=tkinter ewhaving created the widgetswe must now lay them out the grid layout we have used is illustrated in figure principallabel principalscale ratelabel ratescale yearslabel yearsscale amountlabel actualamountlabel figure the interest program' layout every widget supports the grid(method (and some other layout methods such as pack()calling grid(lays out the widget within its parentmaking it occupy the specified row and column we can set widgets to span multiple columns and multiple rows using additional keyword arguments (rowspan and columnspan)and we can add some margin around them using the padx (left and