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
测试WHERE
id=?", (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`
...
我有一个 class GroupScreen
它有一个变量 self.abc = 10
那么如何在 TreeviewGroup
class 中获取这个变量值并传入这个查询cur.execute("SELECT * FROM
测试WHERE
id=?", (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`
...