Every input widget on our form has a label associated with it. In a small application, we can just create the label and input separately, then add each to the parent frame as follows:
form = Frame() label = Label(form, text='Name') name_input = Entry(form) label.grid(row=0, column=0) name_input.grid(row=1, column=0)
That works fine and you could do it that way for your application, but it also creates a lot of tedious, repetitious code, and moving inputs around means changing twice as much code. Since the label and input widgets belong together, it would be smart to create a small wrapper class to contain both and establish some universal defaults.