我是kivy的新手。 我有一个按钮来刷新数据库中的列表项, 这是函数绑定到这个按钮:
def refresh_account(self):
self.ids.grid.clear_widgets()
for d in self.listdata:
self.acc_grid.add_row(d, body_alignment, col_size)
scroll = ScrollView(size_hint=(0.9, 0.9), size=(400, 50000), scroll_y=0, pos=(40, -30))
scroll.clear_widgets()
print "scroll children : ", scroll.children
scroll.add_widget(self.acc_grid)
scroll.do_scroll_y = True
scroll.do_scroll_x = False
self.ids.grid.add_widget(self.scroll)
我有错误:
kivy.uix.widget.WidgetException:无法添加“grid.DataGrid对象在0x7fd415756ce8”,它已经有一个父“kivy.uix.scrollview.ScrollView对象在0x7fd413771b48”
那是怎么回事?我已经通过scroll.clear_widgets()移除了所有小部件,并滚动子打印出“[]”?
答案 0 :(得分:6)
错误不是滚动已经有子项,而是您尝试添加到其中的网格已经有父项。您还没有足够的信息来实际调试问题,但可能self.acc_grid
不是self.ids.grid
的孩子,因此在调用clear_widgets
之后仍然有父母。< / p>
scroll = ScrollView(size_hint=(0.9, 0.9), size=(400, 50000), scroll_y=0, pos=(40, -30))
scroll.clear_widgets()
此外,上面的代码片段什么也没做。你刚刚实例化ScrollView
所以它自然没有孩子。如果你不这么认为,也许这会导致你的错误。
(另外,使用clear_widgets
可能不是必需的,您可以改为更新现有的小部件。)