gpt4 book ai didi

kivy - 清除小部件 kivy

转载 作者:行者123 更新时间:2023-12-02 03:30:31 27 4
gpt4 key购买 nike

我是kivy的新手。我有一个按钮可以刷新数据库中的列表项,这是绑定(bind)到该按钮的函数:

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: Cannot add "grid.DataGrid object at 0x7fd415756ce8", it already has a parent "kivy.uix.scrollview.ScrollView object at 0x7fd413771b48"

这有什么原因吗?我已通过 scroll.clear_widgets() 删除了所有小部件,并且滚动子项打印输出为“[]”?

最佳答案

错误不是滚动已经有子项,而是您尝试添加到其中的网格已经有父项。您没有提供足够的信息来实际调试问题,但很可能 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 - 清除小部件 kivy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28059662/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com