def table2(): window = tk.Tk()# 这是主窗口,也就是所说的初始界面 window = tk.Toplevel() window.title("欢迎使用本系统") # 窗口名 window.geometry("1000x750") # 窗口大小 # 手机号、身份证号、年龄、出生日期 data = [ {"手机号": "18845298308", "身份证号": "110101199001011234", "年龄": 31, "出生日期": "1990-01-01"}, {"手机号": "13836277378", "身份证号": "110101199002022345", "年龄": 20, "出生日期": "2002-10-25"}]def show_original_data(): global data data = [ {"手机号": "18845298308","身份证号": "110101199001011234", "年龄": 31, "出生日期": "1990-01-01"}, {"手机号": "13836277378", "身份证号": "110101199002022345", "年龄": 20, "出生日期": "2002-10-25"}]show_data()replace_unmask_btn = Button(window, text="还原", font=("微软雅黑 -20"),bg='pink', command=show_original_data) replace_unmask_btn.place(x=180,y=420)def show_data(): # 清空列表框 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]["出生日期"] )) # 创建列表框 listbox = Listbox(window, width=60, height=20) listbox.grid(row=0, column=0, columnspan=4) # 显示数据 show_data()点击还原的按钮没有反应,不能更新列表框中的数据是怎么回事
时间: 2023-07-19 15:55:14 浏览: 59
根据你提供的代码,我发现在 show_original_data() 函数中虽然改变了全局变量 data 的值,但是没有调用 show_data() 函数来更新列表框中的数据。因此,点击还原的按钮没有反应,不能更新列表框中的数据。你需要在 show_original_data() 函数中添加一行代码来调用 show_data() 函数来更新列表框中的数据。可以将代码修改为:
```
def show_original_data():
global data
data = [
{"手机号": "18845298308","身份证号": "110101199001011234", "年龄": 31, "出生日期": "1990-01-01"},
{"手机号": "13836277378", "身份证号": "110101199002022345", "年龄": 20, "出生日期": "2002-10-25"}
]
show_data() # 添加这一行来更新列表框中的数据
```
这样就能够更新列表框中的数据了。
相关问题
def choose(): window=tk.Tk() window.title("菜单") window.geometry("1000x750") tk.Label(window, text="数据脱敏系统", font=("微软雅黑 -30"),activebackground='pink').place(x=400, y=20) tk.Label(window, text="(请选择)", font=("黑体", 14)).place(x=450, y=60) table_2=tk.Button(window, text="对表格中数据进行脱敏", font=("微软雅黑 -30"),bg='pink',command=table2) table_2.place(x=100, y=330)def table2(): root = tk.Tk()# 这是主窗口,也就是所说的初始界面 window = tk.Toplevel() root.title("欢迎使用本系统") # 窗口名 root.geometry("1000x750") # 窗口大小 # 手机号、身份证号、年龄、出生日期 data = [ {"手机号": "18845298308", "身份证号": "110101199001011234", "年龄": 31, "出生日期": "1990-01-01"}, {"手机号": "13836277378", "身份证号": "110101199002022345", "年龄": 20, "出生日期": "2002-10-25"}]def desensitize_data(): pattern = re.compile(r'1\d{10}|\d{17}[\dXx]') new_data = data.copy() for i in range(len(data)): for key in data[i]: if isinstance(data[i][key], str): new_data[i][key] = re.sub(pattern, replace_sensitive_info, data[i][key]) return new_data def replace_sensitive_info(match): sensitive_info = match.group(0) if re.match(r'^1\d{10}$', sensitive_info): # 匹配手机号 return sensitive_info[0:3] + 'aaaa' + sensitive_info[7:] elif re.match(r'^\d{17}[\dXx]$', sensitive_info): # 匹配身份证号 return sensitive_info[0:8] + 'aaaaaaaa' + sensitive_info[16:] else: return sensitive_info def replace_mask(): global data data = desensitize_data() show_data() def show_original_data(): global data data = [ {"手机号": "18845298308","身份证号": "110101199001011234", "年龄": 31, "出生日期": "1990-01-01"}, {"手机号": "13836277378", "身份证号": "110101199002022345", "年龄": 20, "出生日期": "2002-10-25"}]show_data() replace_mask_btn = Button(root, text="替换脱敏", font=("微软雅黑 -20"),bg='pink',command=replace_mask) replace_mask_btn.place(x=600,y=20) replace_unmask_btn = Button(root, text="还原", font=("微软雅黑 -20"),bg='pink', command=show_original_data) replace_unmask_btn.place(x=180,y=420)点击还原按钮没有反应代码应该怎么改
在show_original_data()函数中,应该在函数内部添加一个展示数据的操作,例如在函数内部添加一个show_data()函数,用于展示数据。修改后的代码如下:
```
def show_original_data():
global data
data = [
{"手机号": "18845298308","身份证号": "110101199001011234", "年龄": 31, "出生日期": "1990-01-01"},
{"手机号": "13836277378", "身份证号": "110101199002022345", "年龄": 20, "出生日期": "2002-10-25"}
]
show_data()
def show_data():
for i in range(len(data)):
for key in data[i]:
tk.Label(window, text=data[i][key], font=("微软雅黑 -20")).place(x=200+i*200, y=200+40*list(data[i].keys()).index(key))
```
同时,在choose()函数中,需要将root改为window,防止两个窗口混淆。修改后的代码如下:
```
def choose():
window=tk.Tk()
window.title("菜单")
window.geometry("1000x750")
tk.Label(window, text="数据脱敏系统", font=("微软雅黑 -30"),activebackground='pink').place(x=400, y=20)
tk.Label(window, text="(请选择)", font=("黑体", 14)).place(x=450, y=60)
table_2=tk.Button(window, text="对表格中数据进行脱敏", font=("微软雅黑 -30"),bg='pink',command=table2)
table_2.place(x=100, y=330)
def table2():
window = tk.Toplevel()
window.title("欢迎使用本系统")
window.geometry("1000x750")
# 手机号、身份证号、年龄、出生日期
data = [
{"手机号": "18845298308", "身份证号": "110101199001011234", "年龄": 31, "出生日期": "1990-01-01"},
{"手机号": "13836277378", "身份证号": "110101199002022345", "年龄": 20, "出生日期": "2002-10-25"}
]
def desensitize_data():
pattern = re.compile(r'1\d{10}|\d{17}[\dXx]')
new_data = data.copy()
for i in range(len(data)):
for key in data[i]:
if isinstance(data[i][key], str):
new_data[i][key] = re.sub(pattern, replace_sensitive_info, data[i][key])
return new_data
def replace_sensitive_info(match):
sensitive_info = match.group(0)
if re.match(r'^1\d{10}$', sensitive_info): # 匹配手机号
return sensitive_info[0:3] + 'aaaa' + sensitive_info[7:]
elif re.match(r'^\d{17}[\dXx]$', sensitive_info): # 匹配身份证号
return sensitive_info[0:8] + 'aaaaaaaa' + sensitive_info[16:]
else:
return sensitive_info
def replace_mask():
nonlocal data
data = desensitize_data()
show_data()
def show_original_data():
nonlocal data
data = [
{"手机号": "18845298308","身份证号": "110101199001011234", "年龄": 31, "出生日期": "1990-01-01"},
{"手机号": "13836277378", "身份证号": "110101199002022345", "年龄": 20, "出生日期": "2002-10-25"}
]
show_data()
def show_data():
for i in range(len(data)):
for key in data[i]:
tk.Label(window, text=data[i][key], font=("微软雅黑 -20")).place(x=200+i*200, y=200+40*list(data[i].keys()).index(key))
replace_mask_btn = tk.Button(window, text="替换脱敏", font=("微软雅黑 -20"),bg='pink',command=replace_mask)
replace_mask_btn.place(x=600,y=20)
replace_unmask_btn = tk.Button(window, text="还原", font=("微软雅黑 -20"),bg='pink', command=show_original_data)
replace_unmask_btn.place(x=180,y=420)
show_data()
```
def gui(self): # print("ui 渲染") self.menuMain() #self.Input() self.menuTab() self.table() self.Show() # self.window = 1 # 调用上述函数 def main(): xt = ManageSystem() xt.gui() tk.mainloop() if __name__ == "__main__": main()解释每一句代码含义
这段代码实现了一个图形用户界面,包含了以下几个部分:
1. `def gui(self):` 定义了一个名为 `gui` 的方法,用于渲染 UI 界面。
2. `self.menuMain()` 调用 `menuMain` 方法,用于创建主菜单。
3. `self.menuTab()` 调用 `menuTab` 方法,用于创建选项卡。
4. `self.table()` 调用 `table` 方法,用于创建表格
5. `self.Show()` 调用 `Show` 方法,用于展示 UI 界面。
6. `def main():` 定义了一个名为 `main` 的方法,用于初始化程序。
7. `xt = ManageSystem()` 创建了一个名为 `xt` 的 `ManageSystem` 对象。
8. `xt.gui()` 调用 `gui` 方法,渲染 UI 界面。
9. `tk.mainloop()` 开始事件循环,等待用户操作。
10. `if __name__ == "__main__":` 判断是否为主程序入口。
上述代码主要是用 Python 的 Tkinter 模块实现的一个简单 UI 界面。其中 `self.menuMain()`、`self.menuTab()`、`self.table()`、`self.Show()` 是 `ManageSystem` 类中的方法,用于创建菜单、选项卡、表格和展示 UI 界面。`tk.mainloop()` 是 Tkinter 模块中的一个方法,用于开始事件循环。
阅读全文