簡體   English   中英

刪除在python GUI樹形視圖中選擇的行,然后也將其從sqlite3數據庫中刪除

[英]Delete Rows selected in a python GUI treeview and then have it deleted from sqlite3 database as well

我正在使用tkinter。 我有一個樹形視圖,並且正在從SQlite DB的數據庫中以樹形視圖顯示數據。 但是,我添加了刪除功能,以便能夠從樹視圖中選擇值,然后使用刪除功能和按鈕將其刪除。 它從樹視圖中刪除,但不從數據庫中刪除。

def delete():
name2 = name_1.get()
phone2 = phone_number.get()
conn2 = sq.connect('Clients.db')
c2 = conn2.cursor()
selected_item = tree1.selection_set()
query = "DELETE FROM clients WHERE name=? AND phone=?"
c2.execute(query,(selected_item,))
conn2.commit()
tree1.delete(selected_item)






root = Tk()
root.geometry("800x800")
root.title("Hello")
root.configure(background="powder blue")
header = Label(root, text = "Clients Database",    font=("arial",30,"bold")).pack()

con = sq.connect('Clients.db')
c = con.cursor()
c.execute("CREATE TABLE IF NOT EXISTS clients (name TEXT, phone TEXT)")
con.commit


tree1 = ttk.Treeview(root, height=10, columns=("Name", "PhoneNumber"),   show=["headings"])
tree1.column('Name', anchor=W)
tree1.column('PhoneNumber', anchor=W)
tree1.heading('Name', text="Name")
tree1.heading('PhoneNumber', text="Phone Number")

我犯了同樣的錯誤:

Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.6/tkinter/__init__.py", line 1705, in __call__
return self.func(*args)
File "/home/zizibaby/Desktop/Ingredients .py", line 38, in delete
c2.execute(query,(selected_item,))
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The  current statement uses 2, and there are 1 supplied.

我很好奇您為什么使用selected_item = tree1.selection_set()

從文檔:

selection_set(*項)

項目成為新選擇。

在版本3.6中更改:項目可以作為單獨的參數傳遞,而不僅僅是單個元組。

在我看來,您應該使用tree.selection()代替。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM