我是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)
Run Code Online (Sandbox Code Playgroud)
我有错误:
kivy.uix.widget.WidgetException:无法添加"grid.DataGrid对象在0x7fd415756ce8",它已经有一个父"kivy.uix.scrollview.ScrollView对象在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()
Run Code Online (Sandbox Code Playgroud)
此外,上面的代码片段什么也没做.你只是实例化了ScrollView它,所以它自然没有孩子.如果您不这么认为,也许这会导致您的错误.
(另外,使用clear_widgets可能不是必需的,您可以只更新现有的小部件).
| 归档时间: |
|
| 查看次数: |
4377 次 |
| 最近记录: |