清除小部件 kivy
Posted
技术标签:
【中文标题】清除小部件 kivy【英文标题】:Clear widget kivy 【发布时间】:2015-03-19 12:38:04 【问题描述】:我是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: 无法在 0x7fd415756ce8",它已经有一个父级 "kivy.uix.scrollview.ScrollView 对象在 0x7fd413771b48"
有什么理由吗?我已通过scroll.clear_widgets()
删除了所有小部件,并且滚动子打印输出为“[]”?
【问题讨论】:
【参考方案1】:错误不是滚动已经有子级,而是您尝试添加到其中的网格已经有父级。您没有提供足够的信息来实际调试问题,但很可能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()
另外,上面的 sn-p 什么也不做。您刚刚实例化了ScrollView
,所以它自然没有子级。如果您不这么认为,也许这会导致您的错误。
(另外,使用clear_widgets
可能不是真的必要,您可以直接更新现有的小部件)。
【讨论】:
我在 kivy 中找不到任何关于更新小部件功能的信息,可能我必须手动进行吗?以上是关于清除小部件 kivy的主要内容,如果未能解决你的问题,请参考以下文章