class CompetitorRegistrationWindow(Toplevel): def __init__(self, parent, db, *args, **kwargs): Toplevel.__init__(self, *args, **kwargs) self.parent = parent self.db = db self.title('Register new competitor...') self.hr1 = Frame(self, height=1, width=500, bg="gray") # creates a gray line under the registration self.fnameLabel = Label(self, text='First:') self.lnameLabel = Label(self, text='Last:') self.levelLabel = Label(self, text='Level:') self.sexLabel = Label(self, text='Sex:') self.ageLabel = Label(self, text='Age:') self.sexValue = StringVar() self.sexValue.set('M') self.levelValues = ('Beginner', 'Intermediate', 'Advanced', 'Open') self.fnameEntry = EntryWithPlaceholder(self, placeholder='John', width=30) self.lnameEntry = EntryWithPlaceholder(self, placeholder='Doe', width=30) self.levelEntry = Spinbox(self, values=self.levelValues) self.sexEntryM = Radiobutton(self, text='M', variable=self.sexValue, value='M') self.sexEntryF = Radiobutton(self, text='F', variable=self.sexValue, value='F') self.ageEntry = Spinbox(self, from_=1, to=100, width=6) self.registerButton = Button(self, text='Register', command=self.register_competitor) self.ageEntry.delete('0', 'end') self.ageEntry.insert(0, 20) self.fnameEntry.bind('<Return>', self.register_competitor) # these bind all the entries to <return> self.lnameEntry.bind('<Return>', self.register_competitor) # meaning that hitting enter while within any of self.levelEntry.bind('<Return>', self.register_competitor) # of them will submit the form to the self.sexEntryF.bind('<Return>', self.register_competitor) # register_competitor function self.sexEntryM.bind('<Return>', self.register_competitor) self.ageEntry.bind('<Return>', self.register_competitor) self.registerButton.bind('<Return>', self.register_competitor) self.fnameLabel.grid(row=1, column=0) self.fnameEntry.grid(row=1, column=1, columnspan=4) self.lnameLabel.grid(row=1, column=5) self.lnameEntry.grid(row=1, column=6, columnspan=4) self.levelLabel.grid(row=2, column=0) self.levelEntry.grid(row=2, column=1, columnspan=2) self.sexLabel.grid(row=2, column=3) self.sexEntryM.grid(row=2, column=4) self.sexEntryF.grid(row=2, column=5) self.ageLabel.grid(row=2, column=6) self.ageEntry.grid(row=2, column=7) self.registerButton.grid(row=2, column=8) def register_competitor(self, *args): self.db.insert_row((self.fnameEntry.get(), self.lnameEntry.get(), self.levelEntry.get(), self.sexValue.get(), self.ageEntry.get(), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)) self.clear_registration() self.fnameEntry.focus_set() def clear_registration(self): self.fnameEntry.replace_placeholder() self.lnameEntry.replace_placeholder() self.levelEntry.setvar(self.levelValues[0], value='1') self.sexValue.set('M') self.ageEntry.delete(0, 'end') self.ageEntry.insert(0, 20)