def __init__(self, master=None, columns=(' ',), selectcmd=None, command=None, expandcolumns=(), showroot=False, selectforeground='white', selectbackground='#00008B', **kw): Treectrl.__init__(self, master, showroot=showroot, **kw) self._multilistbox_opts = {'selectcmd' : selectcmd, 'command' : command, 'expandcolumns' : expandcolumns, 'columns' : columns, 'selectforeground' : selectforeground, 'selectbackground' : selectbackground} self._el_text = self.element_create(type='text', fill=(self._multilistbox_opts['selectforeground'], 'selected'), lines=1) self._el_select = self.element_create(type='rect', showfocus=1, fill=(self._multilistbox_opts['selectbackground'], 'selected')) self._defaultstyle = self.style_create() self.style_elements(self._defaultstyle, self._el_select, self._el_text) self.style_layout(self._defaultstyle, self._el_text, padx=4, iexpand='e', expand='ns') self.style_layout(self._defaultstyle, self._el_select, union=(self._el_text,), ipady=1, iexpand='nsew') self._columns = [] self._styles = [] self.configure(columns=columns, expandcolumns=expandcolumns, selectcmd=selectcmd, command=command) self.notify_bind('<Selection>', self._call_selectcmd) self.bind('<Double-Button-1>', self._call_command) self.bind('<Return>', self._call_command)
def configure(self, cnf=None, **kw): for opt in self._multilistbox_opts.keys(): if not cnf is None and opt in cnf: self._configure_multilistbox(opt, cnf[opt]) del cnf[opt] if opt in kw: self._configure_multilistbox(opt, kw[opt]) del kw[opt] return Treectrl.configure(self, cnf, **kw)
def see(self, index, column=None, center=None): '''Like Tkinter.Listbox.see(). Note that this overrides the see() method inherited from Treectrl.''' item = self._index2item(index) if not item is None: Treectrl.see(self, item, column, center)
def activate(self, index): '''Like Tkinter.Listbox.activate(). Note that this overrides the activate() method inherited from Treectrl.''' item = self._index2item(index) if not item is None: Treectrl.activate(self, item)
def keys(self): keys = Treectrl.keys(self) + self._multilistbox_opts.keys() keys.sort() return keys
def cget(self, key): if key in self._multilistbox_opts.keys(): return self._multilistbox_opts[key] return Treectrl.cget(self, key)
def _setScrolledWidget(self): self.treectrl = Treectrl(self) return self.treectrl