【发布时间】:2020-07-22 21:27:09
【问题描述】:
我正在尝试创建一个数据库系统,我可以在其中保存和删除前端(python/tkinter)和后端(sqlite)的用户记录。到目前为止,我已经设法让前端工作。单击按钮时,数据(输入到输入框)被保存到树中。删除按钮将清除树和条目框中的数据。
现在我正在努力让后端正常工作。虽然我能够将数据保存到 sqlite 数据库,但我不知道在 tkinter 树中选择时如何从 sqlite 数据库中删除项目。下面是代码的sn-p。请注意,我为名为“Backend”的后端使用了一个单独的文件。
from tkinter import *
import tkinter.messagebox
import Backend
#frontend
root = Tk()
ID = StringVar()
Name= StringVar()
Age = StringVar()
BirthDate = StringVar()
def SaveData():
if(len(ID.get())!=0):
Backend.saveUserRec(ID.get(),Name.get(), Age.get(), BirthDate.get())
tree.insert('', 'end', values=(ID.get(),Name.get(), Age.get(), BirthDate.get()))
else:
IDnumber= messagebox.showinfo ("","Please enter an ID number")
def DeleteData():
try:
selected_item = tree.selection()[0] ## get selected item from tree
messageDelete= tkinter.messagebox.askyesno ("","Do you want to permanently delete this record?")
if messageDelete > 0:
tree.delete(selected_item)
Clear()
Backend.DeleteRecord()
except Exception:
pass
def Clear():
ID.set("")
Name.set("")
Age.set("")
BirthDate.set("")
btnSaveData = Button(ButtonFrame, text='Save', font=('arial',12), height=1, width=16, bd=2, padx=13, command=SaveData)
btnSaveData.grid(row=0,column=0)
btnDeleteData = Button(ButtonFrame, text='Delete', font=('arial',12), height=1, width=16, bd=2, padx=13, command=DeleteData)
btnDeleteData.grid(row=0,column=1)
root.mainloop()
#backend
import sqlite3
def userrecord():
con =sqlite3.connect("userRecord.db")
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS userRecord(userid INTEGER PRIMARY KEY, \
ID text, Name text, Age text, BirthDate text)")
con.commit()
con.close()
def saveUserRec(ID, Name, Age, BirthDate):
con =sqlite3.connect("userRecord.db")
cur = con.cursor()
userrecord()
cur.execute("INSERT INTO userRecord VALUES (null, ?, ?, ?, ?)”, (ID, Name, Age, BirthDate))
con.commit()
con.close()
def DeleteRecord():
con =sqlite3.connect("userRecord.db")
cur = con.cursor()
cur.execute("DELETE FROM userRecord WHERE userid=?", (userid, tree.set(selected_item, '#1')))
con.commit()
con.close()
【问题讨论】:
-
所以你需要知道如何将所选数据放入我猜的变量中。 this 有没有给你一个初步的想法