帮忙解释一下为什么表格清空不了啊?🙏
代码如下:
import pymssql
from tkinter import ttk, Button
import tkinter as tk
import tkinter.font as tkFont
from tkinter import * # 图形界面库
import tkinter.messagebox as messagebox # 弹窗
from PIL import ImageTk, Image
# 开始页面
class selece_user:
def __init__(self, parent_window):
# parent_window.update()
parent_window.destroy() # 销毁子界面
self.window = tk.Tk() # 初始框的声明
self.window.title('管理员查询用户信息')
self.window.geometry('800x650+270+30') # 这里的乘是小x
label = tk.Label(self.window, text='查询用户信息', bg='orchid', font=('黑体', 27), width=60, height=2).pack()
Label(self.window, text='查询用户的账号:', font=tkFont.Font(size=18)).place(x=100,y=130)
self.admin_tid = tk.Entry(self.window, width=30, font=tkFont.Font(size=18), bg='Ivory') # 账号输入框
self.admin_tid.place(x=315,y=130)
Button(self.window, text="查询", width=10, font=tkFont.Font(size=15), command=self.chaxun).place(x=215,y=200)
Button(self.window, text="返回", width=10, font=tkFont.Font(size=15), command=self.window.destroy).place(x=475,y=200)
# 表格
self.columns = ("游客账号", "姓名", "联系电话", "年龄", "性别", "地址", "身份证号") # 定义列
self.tree = ttk.Treeview(self.window, height=350, show='headings', columns=self.columns) # 隐藏首列
self.tree.place(x=0, y=280)
# 设置列,列还不显示
self.tree.column("游客账号", width=120)
self.tree.column("姓名", width=86)
self.tree.column("联系电话", width=125)
self.tree.column("年龄", width=86)
self.tree.column("性别", width=86)
self.tree.column("地址", width=105)
self.tree.column("身份证号", width=189)
# 设置表头
self.tree.heading("游客账号", text="游客账号")
self.tree.heading("姓名", text="姓名")
self.tree.heading("联系电话", text="联系电话")
self.tree.heading("年龄", text="年龄")
self.tree.heading("性别", text="性别")
self.tree.heading("地址", text="地址")
self.tree.heading("身份证号", text="身份证号")
self.sql_tid = [] # 账号
self.sql_tname = [] # 姓名
self.sql_tphone = [] # 电话
self.sql_tage = [] # 年龄
self.sql_tsex = [] # 性别
self.sql_taddress = [] # 地址
self.sql_tcard = [] # 身份证
# 打开数据库连接
con = pymssql.connect(server='192.168.0.103', port='1433', user='sa', password='123456', database='票务管理系统')
cursor = con.cursor() # 使用cursor()方法获取操作游标
try:
# 执行SQL语句
cursor.execute("SELECT * FROM 用户信息表")
# 获取所有记录列表
results = cursor.fetchall()
for row in results:
self.sql_tid.append(row[0])
self.sql_tname.append(row[2])
self.sql_tphone.append(row[3])
self.sql_tage.append(row[4])
self.sql_tsex.append(row[5])
self.sql_taddress.append(row[6])
self.sql_tcard.append(row[7])
except:
print("Error: unable to fetch data")
messagebox.showinfo('警告!', '数据库连接失败!')
con.close() # 关闭数据库连接
# 写入数据
for i in range(min(len(self.sql_tid),len(self.sql_tname),len(self.sql_tphone),len(self.sql_tage),len(self.sql_tsex),len(self.sql_taddress),len(self.sql_tcard))):
self.tree.insert('',i,values=(self.sql_tid[i],self.sql_tname[i],self.sql_tphone[i],self.sql_tage[i],self.sql_tsex[i],self.sql_taddress[i],self.sql_tcard[i]))
self.window.mainloop() # 主消息循环
# 清空表格
def delButton(self):
x = self.tree.get_children()
for item in x:
self.tree.delete(item)
# 查询按钮
def chaxun(self):
self.delButton() # 清空
# 从界面获取的数据
admin_tid = str(self.admin_tid.get())
sql_tid = str(self.sql_tid)
if str(self.admin_tid.get()) not in str(self.sql_tid):
messagebox.showinfo('警告!', '该用户不存在!')
# 打开数据库连接
con = pymssql.connect(server='192.168.0.103', port='1433', user='sa', password='123456', database='票务管理系统')
cursor = con.cursor() # 使用cursor()方法获取操作游标
try:
cursor.execute("SELECT * FROM 用户信息表 WHERE ID = '%s'" % (admin_tid))
results = cursor.fetchall()
for row in results:
self.sql_tid.append(row[0])
self.sql_tname.append(row[2])
self.sql_tphone.append(row[3])
self.sql_tage.append(row[4])
self.sql_tsex.append(row[5])
self.sql_taddress.append(row[6])
self.sql_tcard.append(row[7])
except:
print("Error: unable to fetch data")
messagebox.showinfo('警告!', '查询失败!')
con.close() # 关闭数据库连接
# 写入数据
for i in range(min(len(self.sql_tid),len(self.sql_tname),len(self.sql_tphone),len(self.sql_tage),len(self.sql_tsex),len(self.sql_taddress),len(self.sql_tcard))):
self.tree.insert('',i,values=(self.sql_tid[i],self.sql_tname[i],self.sql_tphone[i],self.sql_tage[i],self.sql_tsex[i],self.sql_taddress[i],self.sql_tcard[i]))
win = tk.Tk()
selece_user(win)