Пример #1
0
class agacGorunumu(App):

    def build(self):
        duzen=BoxLayout(orientation='vertical')
        
        self.agac_koku = TreeView(hide_root=True, size_hint_y=0.8)
        
        kuruyemisler=[('Sert Kabuklular',('Ceviz', 'Fındık', 'Badem')), 
                      ('Meyve Kuruları',('Dut', 'Vişne', 'Kayısı', 'İncir'))]
        
        for ky in kuruyemisler:
            eb=self.agac_koku.add_node(TreeViewLabel(text=ky[0]))
            for k in ky[1]:
                self.agac_koku.add_node(TreeViewLabel(text=k),eb)

        duzen.add_widget(self.agac_koku)
        dgm=Button(text='Elemanları Yaz', size_hint_y=0.2)
        dgm.bind(on_press=self.elemanlari_yaz)
        duzen.add_widget(dgm)
        
        return duzen
        
        
    def elemanlari_yaz(self, *args):
        for eb in self.agac_koku.iterate_all_nodes():
            print eb.level, eb.text
            
        if self.agac_koku.selected_node:
            print "Seçili Eleman", self.agac_koku.selected_node.text
            
         
        print self.agac_koku.get_node_at_pos((1,1))
Пример #2
0
class TreeWidget(BoxLayout):
    def __init__(self, **kwargs):
        super(TreeWidget, self).__init__(**kwargs)
        self.selected = None
        self.items = []
        # self.on_touch_down=self.touch

    def populate_tree_view(self, tree_view, parent, node):
        if parent is None:
            tree_node = tree_view.add_node(
                TreeViewLabel(
                    text=node['node_id'],
                    on_touch_up=self.touch1,
                    is_open=True,
                    font_size=25,
                ))  # ,bcolor=random.choice(self.colors)
            tree_node.item = node["item"]
            self.items.append(tree_node)
        else:
            tl = TreeViewLabel(
                text=node['node_id'],
                is_open=False,
                font_size=25,
            )  # ,bcolor=random.choice(self.colors)
            tl.item = node["item"]
            tree_node = tree_view.add_node(tl, parent)

        for child_node in node['children']:
            self.populate_tree_view(tree_view, tree_node, child_node)

    def define(self, tree1, callback, colors):
        self.callback = callback
        self.colors = colors

        self.tv = TreeView(root_options=dict(text='Playlists'),
                           hide_root=True,
                           on_touch_down=self.touch2,
                           indent_level=10)
        self.tv.size_hint = 1, None
        self.tv.bind(minimum_height=self.tv.setter('height'))
        self.populate_tree_view(self.tv, None, tree1)
        root = ScrollView(pos=(0, 0))
        root.add_widget(self.tv)
        self.add_widget(root)

    def touch1(self, instance, touch):
        return False

    def touch2(self, instance, touch):
        """
        Handle a touch event on a child TreeViewLabel

        :param args:
        :param kwargs:
        :return:
        """
        node = self.tv.get_node_at_pos(touch.pos)
        if not node:
            return
        try:
            self.callback(node.item["uri"], node.text)
            return True
        except:
            pass
        self.tv.toggle_node(node)
        node.dispatch('on_touch_down', touch)
        return True