Tkinter中SQLite3数据无法在Treeview表格显示问题求助
Tkinter Treeview无法显示SQLite3数据库数据问题
程序可正常将数据插入Employees.db数据库(已手动打开数据库确认数据写入正确),但Tkinter的Treeview表格无法显示数据库中的数据。
相关代码
lab.py
def add_to_treeview(): employees = database.fetch_employees() tree.delete(*tree.get_children()) for employee in employees: tree.insert('', END, values=employee) def insert(): id = id_entry.get() name = name_entry.get() role = role_entry.get() gender = variable1.get() status = status_entry.get() if not (id and name and role and gender and status): messagebox.showerror('Error', 'Enter all fields.') elif database.id_exists(id): messagebox.showerror('Error', 'ID already exists.') else: database.insert_employee(id,name,role,gender,status) add_to_treeview() messagebox.showinfo('Success', 'Data has been inserted.') style = ttk.Style(app) style.theme_use('clam') style.configure('Treeview', font=font2,foreground='#aaa',background='#000',fieldbackground='#313837') style.map('Treeview',background=[('selected', '#1A8F2D')]) tree = ttk.Treeview(app,height=15)#9) tree['columns'] = ('ID', 'Name', 'Role', 'Gender', 'Status') tree.column('#0', width=0, stretch=tk.NO) tree.column('ID', anchor=tk.CENTER, width=120) tree.column('Name', anchor=tk.CENTER, width=120) tree.column('Role', anchor=tk.CENTER, width=120) tree.column('Gender', anchor=tk.CENTER, width=100) tree.column('Status', anchor=tk.CENTER, width=120) tree.heading('ID', text='ID') tree.heading('Name', text='Name') tree.heading('Role', text='Role') tree.heading('Gender', text='Gender') tree.heading('Status', text='Status') tree.place(x=300,y=20)#60,y=20) add_to_treeview() app.mainloop()
database.py
import sqlite3 def create_table(): conn = sqlite3.connect('Employees.db') cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS Employees ( id TEXT PRIMARY KEY, name TEXT, role TEXT, gender TEXT, status TEXT)''') conn.commit() conn.close() def fetch_employees(): conn = sqlite3.connect('Employees.db') cursor = conn.cursor() cursor.execute('SELECT * FROM Employees') employees = cursor.fetchall() conn.close() return employees def insert_employee(id, name, role, gender, status): conn = sqlite3.connect('Employees.db') cursor = conn.cursor() cursor.execute('INSERT INTO Employees (id, name, role, gender, status) VALUES (?,?,?,?,?)', (id, name, role, gender, status)) conn.commit() conn.close()
截图说明
- 程序预期效果:Treeview表格中显示完整的员工数据列表
- 程序当前状态:Treeview表格为空,无任何数据内容显示
内容的提问来源于stack exchange,提问作者Канат Муратов
相关产品推荐
相关产品推荐

