Python/Kivy :将变量从一个 class 传递到另一个 class

Python/Kivy : pass a variable from one class to another class

我有一个 class GroupScreen 它有一个变量 self.abc = 10 那么如何在 TreeviewGroup class 中获取这个变量值并传入这个查询cur.execute("SELECT * FROM测试WHEREid=?", (abc,))

class GroupScreen(Screen):
    groupName = ObjectProperty(None)
    popup = ObjectProperty(None)
    abc = ObjectProperty(None)

    def display_groups(self, instance):
        self.abc    =   10
        print(self.abc)
        if len(instance.text) > 0:
            self.popup = TreeviewGroup(self.abc)
            self.popup.open()

class TreeviewGroup(Popup):
    treeview = ObjectProperty(None)
    tv = ObjectProperty(None)

    def __init__(self, **kwargs):
        super(TreeviewGroup, self).__init__(**kwargs)
        self.tv = TreeView(root_options=dict(text=""),
                           hide_root=False,
                           indent_level=4)


        cur.execute("SELECT * FROM `test` WHERE `id`=?", (abc,))
        rows = cur.fetchall()
        print(rows)
        # rows = [(1, 'test1'), (2, 'test2'), (3, 'test3')]
        tree = []

        for r in rows:
            tree.append({'node_id': r[1], 'children': []})
        for branch in tree:
            populate_tree_view(self.tv, None, branch)
        self.remove_widgets()
        self.treeview.add_widget(self.tv)

    def remove_widgets(self):
        for child in [child for child in self.treeview.children]:
            self.treeview.remove_widget(child)

abc 添加到您的 __init__ 应该有效:

class TreeviewGroup(Popup):
    treeview = ObjectProperty(None)
    tv = ObjectProperty(None)

    def __init__(self, abc, **kwargs): # note the `abc`
        ...