我尝试使用(3.3, 4.5) + Point((1, 3)) //Error:No implicit view available from Double => Int.
方法删除tkinter treeview
中显示的记录。我希望所选的tree.selection()
中的所选row
也可以从treeview
数据库中删除,但是当我选择要删除的sqlite3
时,我收到此错误
_tkinter.TclError:找不到项目
我在网站上发现了这个link,但我没有回答我的才能。
row
答案 0 :(得分:1)
Delete
功能有三个问题:
首先,你做
for b in selected_item:
tree.delete(b)
但selected_item
是一个字符串,因此您遍历项ID的字符。我认为您想要做的是迭代选定的项目,例如:
for selected_item in tree.selection():
tree.delete(selected_item)
其次,您尝试使用
删除db条目cur.execute("DELETE FROM profile WHERE id=?", (selected_item,))
但是selected_item
是树中的项ID,而不是db中的项ID。 db id是第一列中的ID,您可以使用
tree.set(selected_item, '#1')
最后,如果没有选定的项目,行selected_item = tree.selection()[0]
将抛出错误,但如果您想要删除所有选定的项目,则不再需要此行(请参阅代码下文)。
这是完整的功能:
def Delete():
conn = sqlite3.connect("TRIAL.db")
cur = conn.cursor()
for selected_item in tree.selection():
print(selected_item) # it prints the selected row id
cur.execute("DELETE FROM profile WHERE id=?", (tree.set(selected_item, '#1'),))
conn.commit()
tree.delete(selected_item)
conn.close()