为id赋值报错且add_to_fav()参数不匹配,求新手易懂解决方案
两个报错的修复方案
1. 报错add_to_fav() takes 1 positional argument but 2 were given
Kivy里按钮的on_release事件会自动把按钮实例作为参数传给绑定的函数,你的add_to_fav只定义了self一个参数,所以触发时会参数不匹配报错。
修复方法:给add_to_fav添加一个参数(哪怕不用),修改函数定义:
def add_to_fav(self, inst):
2. 报错int is not subscriptable
你在add_to_fav里写了id = self.row_num[0],但self.row_num是整数类型(在on_row_press中计算得到的是行号整数),整数不能用下标[0]访问。你需要的是选中化学品的ID,应该用之前存在self.row_data里的第一个元素(也就是数据表第一列的Id值)。
修复方法:把获取ID的代码改成:
id = self.row_data[0]
修改后的完整add_to_fav函数
def add_to_fav(self, inst): print('add to favorite') saved = '1' id = self.row_data[0] print(id) self.database.update_chemical(id, saved) self.reload_data_table() self.dialog.dismiss() self.dialog = None
内容的提问来源于stack exchange,提问作者MiLi
相关产品推荐
相关产品推荐

