已经添加了,还是不能更新列表框中的数据
时间: 2024-04-03 13:34:58 浏览: 110
完整版组合框、列表框去重复数据妙法.rar
如果已经添加了调用 `show_data()` 函数的语句,但是还是不能更新列表框中的数据,那么可能是因为 `listbox` 对象没有被正确的获取。
在你提供的代码中,创建 `listbox` 对象的语句为:
```
listbox = Listbox(window, width=60, height=20)
```
但是,在 `show_data()` 和 `show_original_data()` 函数中,使用的 `listbox` 对象并没有通过参数传递进来,而是直接引用了全局变量 `listbox`。也就是说,这里的 `listbox` 对象和上面创建的 `listbox` 对象是不同的。因此,你需要将 `listbox` 对象作为参数传递到 `show_data()` 和 `show_original_data()` 函数中。
可以将代码修改为:
```
def show_data(listbox): # 接收 listbox 对象作为参数
# 清空列表框
listbox.delete(0, END)
# 显示表头
listbox.insert(END, "{:<15s}{:<25s}{:<5s}{}".format("手机号", "身份证号", "年龄", "出生日期"))
# 显示数据
for i in range(len(data)):
listbox.insert(END, "{:<15s}{:<25s}{:<5d}{}".format(
data[i]["手机号"],
data[i]["身份证号"],
data[i]["年龄"],
data[i]["出生日期"]
))
def show_original_data(listbox): # 接收 listbox 对象作为参数
global data
data = [
{"手机号": "18845298308","身份证号": "110101199001011234", "年龄": 31, "出生日期": "1990-01-01"},
{"手机号": "13836277378", "身份证号": "110101199002022345", "年龄": 20, "出生日期": "2002-10-25"}
]
show_data(listbox) # 添加这一行来更新列表框中的数据
```
然后在创建 `listbox` 对象时,将其传递到 `show_data()` 和 `show_original_data()` 函数中即可,示例代码如下:
```
listbox = Listbox(window, width=60, height=20)
listbox.grid(row=0, column=0, columnspan=4)
show_data(listbox) # 初始状态下显示数据
replace_unmask_btn = Button(window, text="还原", font=("微软雅黑 -20"),bg='pink', command=lambda: show_original_data(listbox))
replace_unmask_btn.place(x=180, y=420)
```
这样就能够更新列表框中的数据了。
阅读全文