Kivy的MDDataTable使用add_row触发KeyError报错求助
问题原因
你出现KeyError: 'add_row'的核心原因是:add_row是MDDataTable的普通实例方法,不是可以通过bind绑定的事件。Kivy的bind方法仅支持绑定on_开头的事件对象,你把普通方法名作为事件名传递给bind,自然找不到对应的事件键值,所以抛出KeyError。
修复步骤
- 直接删除代码中报错的绑定语句:
self.data_tables.bind(add_row=self.add_row)
- 调整新增行的调用逻辑:需要新增行的时候,直接调用MDDataTable实例自带的
add_row方法即可,不需要额外绑定,也不需要自定义同名方法包裹(除非有额外自定义逻辑)。示例调用方式如下:
# 拿到新数据后直接调用表格的add_row方法 new_row = ("3", "Mushroom", "3", "Bad") self.data_tables.add_row(new_row)
补充注意事项
- 传入
add_row的行数据长度必须和你定义的column_data的列数完全一致,否则会触发参数不匹配报错 - 如果需要保留自定义的
add_row方法做前置逻辑处理,修改成如下形式即可:
def add_row(self, row_data): # 可在这里添加自定义逻辑,比如数据校验、日志打印等 print(f"新增行数据:{row_data}") # 调用表格自带方法完成行插入 self.data_tables.add_row(row_data)
内容的提问来源于stack exchange,提问作者Jolin
相关产品推荐
相关产品推荐

