def add_button(self, name, checkable=False, checked=False):
<EOL>name = self._clean_up_name(name)<EOL>s = name.split('<STR_LIT:/>')<EOL>if not self._find_parameter(s, quiet=True) == None:<EOL><INDENT>self.print_message("<STR_LIT>"+name+"<STR_LIT>")<EOL>return None<EOL><DEDENT>p = s.pop(-<NUM_LIT:1>)<EOL>b = self._find_parameter(s, create_missing=True)<EOL>if b == None: return None<EOL>ap = _g.parametertree.Parameter.create(name=p, type='<STR_LIT:action>')<EOL>if b == self._widget: b.addParameters(ap)<EOL>else:                 b.addChild(ap)<EOL>ap.signal_clicked = ap.sigActivated<EOL>if name in self._lazy_load:<EOL><INDENT>v = self._lazy_load.pop(name)<EOL>self._set_value_safe(name, v, True, True)<EOL><DEDENT>self.connect_any_signal_changed(self.autosave)<EOL>return Button(name, checkable, checked, list(ap.items.keys())[<NUM_LIT:0>].button)<EOL>
Adds (and returns) a button at the specified location.