我有一个json,它在一个treeview中向我展示它的内容,目前我有一个函数,它可以选择项目并删除它,但它只在treeview中删除,而不在json中更新,我的问题是如何在这个函数中调用json来更新和删除所选的项目。
此函数删除树状视图中的项目
def borrar_select():
borrar1 = json_tree.selection()[0]
json_tree.delete(borrar1)
我试着调用json来读取它并写入这个函数。
def borrar_select():
with open('prueba1.json', "r") as f:
data = json.load(f)
for record in data['Clientes']:
borrar1 = json_tree.selection()[0]
json_tree.delete(borrar1)
with open('prueba1.json', "w") as f:
json.dump(record,f,indent=4)
实际上,它删除了树视图中选定的行,但在控制台中,我得到了以下错误。
PS C:\Users\*\Desktop\Tkinter> & E:/Prog/Python3/Python311/python.exe c:/Users/*/Desktop/Tkinter/test1.py
Exception in Tkinter callback
Traceback (most recent call last):
File "E:\Prog\Python3\Python311\Lib\tkinter\__init__.py", line 1948, in __call__
return self.func(*args)
^^^^^^^^^^^^^^^^
File "c:\Users\*\Desktop\Tkinter\test1.py", line 102, in borrar_select
borrar1 = json_tree.selection()[0]
~~~~~~~~~~~~~~~~~~~~~^^^
IndexError: tuple index out of range
因此,修改也不会保存在json中。
我最近使用Python,所以我想如果有人能给予我解决这个问题。
这是一个工作原理的例子
一个三个三个一个
1条答案
按热度按时间kuuvgm7e1#
borrar_select()
中的以下代码:将遍历JSON文件内的所有记录,并尝试在每次迭代中删除树视图中的第一个选中项。如果没有选中项,则会引发异常,因为
json_tree.selection()
将返回空元组。即使选中了一个项,在第二次迭代中也会引发异常,因为选中项已被删除。您只需使用
json_tree.delete(...)
删除所选项目,然后将剩余项目保存到文件: