清除小部件kivy

时间:2015-01-21 04:32:25

标签: kivy

我是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()移除了所有小部件,并滚动子打印出“[]”?

1 个答案:

答案 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可能不是必需的,您可以改为更新现有的小部件。)