Tkinter注册程序第17行报错求助:无法运行原因排查
Tkinter注册程序报错排查与修复
你的代码存在两个明确问题,导致程序无法运行:
1. 函数定义顺序错误
第17行创建提交按钮时,指定了command=write_to_file,但write_to_file函数是在按钮之后才定义的。Python是逐行执行的,此时函数还未被定义,会触发NameError。
修复方法:把write_to_file函数的定义移到创建提交按钮之前。
2. F-string语法错误
file.write(f"{username},{password}\n")这一行里,你直接在f-string内部换行,不符合Python语法规范,会触发SyntaxError。需要用转义字符\n表示换行,或者将字符串写在同一行。
修复后的完整代码
import tkinter as tk # 先定义write_to_file函数 def write_to_file(): username = username_entry.get() password = password_entry.get() # 用\n表示换行,修复f-string语法 with open("users.txt", "a") as file: file.write(f"{username},{password}\n") # 清空输入框 username_entry.delete(0, tk.END) password_entry.delete(0, tk.END) # 创建主窗口 root = tk.Tk() root.title("Sign-up") # 创建用户名和密码输入区域 tk.Label(root, text="Username:").grid(row=0, column=0) username_entry = tk.Entry(root) username_entry.grid(row=0, column=1) tk.Label(root, text="Password:").grid(row=1, column=0) password_entry = tk.Entry(root, show="*") password_entry.grid(row=1, column=1) # 创建提交按钮(此时函数已定义) submit_button = tk.Button(root, text="Submit", command=write_to_file) submit_button.grid(row=2, column=0, columnspan=2) # 启动主循环 root.mainloop()
额外说明
open("users.txt", "a")使用追加模式,每次提交的账号密码会追加到文件末尾,不会覆盖原有内容,这部分逻辑是正确的。- 输入框清空的逻辑没问题,修复后点击提交按钮会正常写入数据并清空输入框。
内容的提问来源于stack exchange,提问作者user19784927
相关产品推荐
相关产品推荐

