我正在制作一个存储系统,在我的代码中,函数中有一个树视图。我想使用sqlite3更新数据库中选定的记录。程序正在运行,但当我从表中选择一行时,程序显示“名称‘未定义’”。如何访问更新和选择功能中的条目小部件
def view_form():
global tree
top_view_form = tkinter.Frame(viewform, width = 30, bg ="#31CDCC")
top_view_form.pack(side=tkinter.TOP, fill=tkinter.X)
bottom_view_form = tkinter.Frame(viewform, width=600, bg="#31CDCC")
bottom_view_form.pack(side=tkinter.BOTTOM, padx=10, pady=30)
entry_form = tkinter.Frame(viewform, width = 600, bg = "#31CDCC")
entry_form.pack(side=tkinter.BOTTOM, padx = 10, pady=10)
new_entry = tkinter.Frame(viewform, width = 600, bg = "#31CDCC")
new_entry.pack(side = tkinter.BOTTOM, padx = 20, pady = 5)
entry = tkinter.Frame(viewform, width = 600, bg = "#31CDCC")
entry.pack(side = tkinter.BOTTOM, padx = 30, pady = 10)
mid_view_form = tkinter.Frame(viewform, width = 600, bg = "#31CDCC")
mid_view_form.pack(side=tkinter.TOP, fill = tkinter.X)
label_text = tkinter.Label(top_view_form, text="View Vaccines", font=('courier new', 18), bg ="#31CDCC", width = 30)
label_text.pack(fill=tkinter.X)
scroll_bar_y = tkinter.Scrollbar(mid_view_form, orient=tkinter.VERTICAL)
style = ttk.Style()
# theme
style.theme_use("clam")
# configure treeview colors
style.configure("Treeview",
background = "white",
foreground = "black",
rowheight = 20,
fieldbackground = "white")
# change selected color
style.map('Treeview',
background= [('selected', '#2E86C1')])
tree = ttk.Treeview(mid_view_form, columns = ("Product ID", "Vaccine Name", "Quantity", "Expiration Date"), selectmode="extended", height = 100, yscrollcommand=scroll_bar_y.set)
scroll_bar_y.config(command=tree.yview)
scroll_bar_y.pack(side=tkinter.RIGHT, fill=tkinter.Y)
tree.heading('Product ID', text="Product ID", anchor=tkinter.W)
tree.heading('Vaccine Name', text="Vaccine Name", anchor=tkinter.W)
tree.heading('Quantity', text="Quantity", anchor=tkinter.W)
tree.heading('Expiration Date', text="Expiration Date", anchor=tkinter.W)
tree.column('#0', stretch=tkinter.NO, minwidth=0, width=0)
tree.column('#1', stretch=tkinter.NO, minwidth=0, width=0)
tree.column('#2', stretch=tkinter.NO, minwidth=0, width=200)
tree.column('#3', stretch=tkinter.NO, minwidth=0, width=120)
tree.column('#4', stretch=tkinter.NO, minwidth=0, width=120)
tree.pack()
# Entry and Labels
lbl_vac = tkinter.Label(entry_form, text = "Vaccine Name:", font = ('courier new',8), bg ="#31CDCC")
lbl_vac.grid(row = 1, column = 0,sticky = tkinter.W)
vaccine_name = tkinter.Entry(entry_form, textvariable = VACCINE_NAME, font = ('lucida bright', 8), width = 15)
vaccine_name.grid(row = 1, column = 1)
lbl_quan = tkinter.Label(entry_form, text = "Quantity:", font = ('courier new', 8), bg = "#31CDCC")
lbl_quan.grid(row = 1, column = 2, sticky = tkinter.W)
vaccine_quan = tkinter.Entry(entry_form, textvariable = VACCINE_QUAN, font = ('lucida bright', 8), width = 15)
vaccine_quan.grid(row = 1, column = 3)
lbl_exp = tkinter.Label(entry_form, text = "Expiration Date:", font = ('courier new', 8), bg = "#31CDCC")
lbl_exp.grid(row = 1, column = 4, sticky = tkinter.W)
vaccine_exp = tkinter.Entry(entry_form, textvariable = VACCINE_EXP, font = ('lucida bright', 8), width = 15)
vaccine_exp.grid(row=1, column=5)
search_name = tkinter.Label(entry, text = 'Search Vaccine Name: ', font = ('courier new', 10), bg = "#31CDCC")
search_name.grid(row = 0, column = 0, sticky = tkinter.W)
search_entry = tkinter.Entry(entry, textvariable = SEARCH, font = ('lucida bright', 10), width = 20).grid(row = 0, column = 1)
# Buttons
btn_search = tkinter.Button(entry, text="Search", width=15, bg="#AAF5EA", command=search)
btn_search.grid(row = 0, column = 5)
btn_update = tkinter.Button(bottom_view_form, text="Update", width = 15, bg = "#AAF5EA", command=update)
btn_update.pack(side=tkinter.LEFT, padx=15)
btn_del = tkinter.Button(bottom_view_form, text="Delete", width = 15, bg = "#AAF5EA", command=delete)
btn_del.pack(side=tkinter.LEFT, padx=15)
btn_reset = tkinter.Button(bottom_view_form, text="Reset", width = 15, bg = "#AAF5EA", command = reset)
btn_reset.pack(side=tkinter.LEFT, padx=15)
tree.bind('<ButtonRelease-1>', select)
display_data()
def display_data():
db()
cursor.execute("SELECT * FROM `vaccines`")
fetch = cursor.fetchall()
for data in fetch:
tree.insert('', 'end', values=(data))
cursor.close()
conn.close()
def update():
global tree
name = VACCINE_NAME.get()
quan = VACCINE_QUAN.get()
exp = VACCINE_EXP.get()
for selected in tree.selection():
vaccine_name.insert(0, selected)
vaccine_quan.insert(0, selected)
vaccine_exp.insert(0, selected)
conn = sqlite3.connect("vac_storage.db")
cur = conn.cursor()
cur.execute("UPDATE `vaccines` SET vaccine_name = ?, vaccine_quan = ?, vaccine_exp = ? WHERE `vaccines_id`", (name, quan, exp, tree.set(selected, '#1')))
conn.commit()
conn.close()
def select(event):
global tree
print(tree.selection())
for item in tree.selection():
content = tree.item(item, 'values')
vaccine_name.insert(tk.END, content[1])
vaccine_quan.insert(tk.END, content[2])
vaccine_exp.insert(tk.END, content[3])
def view():
global viewform
viewform = tkinter.Toplevel()
viewform.title("Handling Vaccine Storage/View Product")
viewform.geometry("600x400")
viewform.resizable(False, False)
viewform.config(bg = "#31CDCC")
view_form()
目前没有回答
相关问题 更多 >
编程相关推荐