def add_row(self, key: str, default: str=None,<EOL>unit_label: str=None, enable: bool=None):
self.keys.append(ttk.Label(self, text=key))<EOL>self.defaults.append(default)<EOL>self.unit_labels.append(<EOL>ttk.Label(self, text=unit_label if unit_label else '<STR_LIT>')<EOL>)<EOL>self.enables.append(enable)<EOL>self.values.append(ttk.Entry(self))<EOL>row_offset = <NUM_LIT:1> if self.title is not None else <NUM_LIT:0><EOL>for i in range(len(self.keys)):<EOL><INDENT>self.keys[i].grid_forget()<EOL>self.keys[i].grid(row=row_offset, column=<NUM_LIT:0>, sticky='<STR_LIT:e>')<EOL>self.values[i].grid(row=row_offset, column=<NUM_LIT:1>)<EOL>if self.unit_labels[i]:<EOL><INDENT>self.unit_labels[i].grid(row=row_offset, column=<NUM_LIT:3>, sticky='<STR_LIT:w>')<EOL><DEDENT>if self.defaults[i]:<EOL><INDENT>self.values[i].config(state=tk.NORMAL)<EOL>self.values[i].delete(<NUM_LIT:0>, tk.END)<EOL>self.values[i].insert(<NUM_LIT:0>, self.defaults[i])<EOL><DEDENT>if self.enables[i] in [True, None]:<EOL><INDENT>self.values[i].config(state=tk.NORMAL)<EOL><DEDENT>elif self.enables[i] is False:<EOL><INDENT>self.values[i].config(state=tk.DISABLED)<EOL><DEDENT>row_offset += <NUM_LIT:1><EOL>self.values[i].unbind('<STR_LIT>')<EOL>self.values[i].unbind('<STR_LIT>')<EOL>if self.callback is not None:<EOL><INDENT>def callback(event):<EOL><INDENT>self.callback()<EOL><DEDENT>self.values[i].bind('<STR_LIT>', callback)<EOL>self.values[i].bind('<STR_LIT>', callback)<EOL><DEDENT><DEDENT>
Add a single row and re-draw as necessary

:param key: the name and dict accessor
:param default: the default value
:param unit_label: the label that should be \
applied at the right of the entry
:param enable: the 'enabled' state (defaults to True)
:return: