清除Kivy中的小部件

5

我是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)

我收到了一个错误信息: 这是什么原因呢?我使用了 scroll.clear_widgets() 来移除所有的小部件,而 scroll 的子部件输出结果为 "[]" 呢?
1个回答

10
错误不在于滚动视图已经有子部件,而在于您尝试添加到其中的网格已经有了父级。你没有提供足够的信息来实际调试问题,但很可能是因为self.acc_grid不是self.ids.grid的子部件,因此在调用clear_widgets后仍然有一个父级。
scroll = ScrollView(size_hint=(0.9, 0.9), size=(400, 50000), scroll_y=0, pos=(40, -30))
scroll.clear_widgets()

此外,上面的片段没有任何作用。您只是实例化了 ScrollView ,因此自然没有子项。如果您认为有其他情况,请参阅此内容以帮助解决问题。

(再次提醒,使用clear_widgets 可能并不是必要的,您可以更新现有的小部件而不是清除它们)。


我在Kivy中找不到有关更新小部件函数的任何信息,也许我必须手动创建它? - Cherry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接