def __init__(self, master, root_id, root_label='', get_contents_callback=None, dist_x=15, dist_y=15, text_offset=10, line_flag=1, expanded_icon=None, collapsed_icon=None, regular_icon=None, plus_icon=None, minus_icon=None, unchecked_icon=None, checked_icon=None, greyed_checked_icon=None,node_class=None, drop_callback=None, node_select_callback=None, *args, **kw_args): Frame.__init__(self, master=master) self.tree=MultiSelectTree(self, root_id, root_label, get_contents_callback, dist_x, dist_y, text_offset, line_flag, expanded_icon, collapsed_icon, regular_icon, plus_icon, minus_icon, node_class,drop_callback = drop_callback, node_select_callback=node_select_callback, *args, **kw_args) self.tree.grid(row=0, column=0, sticky='nsew') # make expandable self.grid_rowconfigure(0, weight=1) self.grid_columnconfigure(0, weight=1) # add scrollbars sb=Scrollbar(self) sb.grid(row=0, column=1, sticky='ns') self.tree.configure(yscrollcommand=sb.set) sb.configure(command=self.tree.yview) sb=Scrollbar(self, orient=HORIZONTAL) sb.grid(row=1, column=0, sticky='ew') self.tree.configure(xscrollcommand=sb.set) sb.configure(command=self.tree.xview) # must get focus so keys work for demo self.tree.focus_set()
class ScrollableMultiSelectTree(Frame): def __init__(self, master, root_id, root_label='', get_contents_callback=None, dist_x=15, dist_y=15, text_offset=10, line_flag=1, expanded_icon=None, collapsed_icon=None, regular_icon=None, plus_icon=None, minus_icon=None, unchecked_icon=None, checked_icon=None, greyed_checked_icon=None,node_class=None, drop_callback=None, node_select_callback=None, *args, **kw_args): Frame.__init__(self, master=master) self.tree=MultiSelectTree(self, root_id, root_label, get_contents_callback, dist_x, dist_y, text_offset, line_flag, expanded_icon, collapsed_icon, regular_icon, plus_icon, minus_icon, node_class,drop_callback = drop_callback, node_select_callback=node_select_callback, *args, **kw_args) self.tree.grid(row=0, column=0, sticky='nsew') # make expandable self.grid_rowconfigure(0, weight=1) self.grid_columnconfigure(0, weight=1) # add scrollbars sb=Scrollbar(self) sb.grid(row=0, column=1, sticky='ns') self.tree.configure(yscrollcommand=sb.set) sb.configure(command=self.tree.yview) sb=Scrollbar(self, orient=HORIZONTAL) sb.grid(row=1, column=0, sticky='ew') self.tree.configure(xscrollcommand=sb.set) sb.configure(command=self.tree.xview) # must get focus so keys work for demo self.tree.focus_set() def getPreviousSelectedNode(self): return self.tree.getPreviousSelectedNode() def getSelectedNode(self): return self.tree.getSelectedNode() def saveNodesToFile(self, fileName): self.tree.saveNodesToFile(fileName) def loadNodesFromFile(self, fileName): self.tree.loadNodesFromFile(fileName) def expandRoot(self): self.tree.expandRoot() def collapseRoot(self): self.tree.collapseRoot() def deleteSelectedNode(self): self.tree.deleteSelectedNode() def createNode(self, name, expandable, parentFullId, expanded, selected): self.tree.createNode(name, expandable, parentFullId, expanded, selected) def moveCursor(self, node): self.tree.move_cursor(node) def getPath(self, fullId): return self.tree.separater.join(fullId)