我正在嘗試爲我的應用程序創建一個基本的日誌框架(不必擔心它的複雜性,它適用於A Level項目)。在checklogin函數中,我試圖檢索用戶輸入的用戶名,並查看它是否已經在數據庫中,並且會添加一些內容以檢查密碼是否與以後匹配。然而,我不斷收到錯誤'NameError:自由變量'userentry'之前引用封閉範圍內'。看看這個錯誤,它說通常的原因是因爲'userentry'正在被重新分配到相同的函數中。但是,我正在努力看到情況如何。任何幫助將不勝感激。獲取NameError:賦值之前引用的自由變量,但無法看到我已經完成的工作
class Login(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
self.configure(background="lightgreen")
def check_login():
sql = "SELECT Password FROM Player WHERE Username IN (?)"
parameters = (userentry.get())
cursor.execute(sql, parameters)
print(cursor.fetchall())
for col in range(5):
self.grid_columnconfigure(col, minsize=50)
for row in range(7):
self.grid_rowconfigure(row, minsize=60)
titlelbl = tk.Label(self,
text="Please enter your username and password",
font = "Verdana 20 bold",
fg="black",
bg="lightgreen")
titlelbl.grid(column=1,
row=0,
columnspan=3)
usernamelbl = tk.Label(self,
text="Username:",
font="Verdana 14",
bg="lightgreen")
usernamelbl.grid(column=1,
row=2)
passwordlbl = tk.Label(self,
text="Password:",
font="Verdana 14",
bg="lightgreen")
passwordlbl.grid(column=1,
row=4)
signupbtn = tk.Button(self,
text="Sign Up",
fg="lightgreen",
bg="darkgreen",
height="3",
width="12",
command = lambda: controller.show_frame("SignUp"))
signupbtn.grid(column=3,
row=6)
loginbtn = tk.Button(self,
text="Log In",
fg="lightgreen",
bg="darkgreen",
height="3",
width="12",
command = check_login())
loginbtn.grid(column=1,
row=6)
userentry = tk.Entry(self)
userentry.grid(column=3,
row=2)
passentry = tk.Entry(self,
show="*")
passentry.grid(column=3,
row=4)
啊,這是有道理的,惱人的事情如此之少可以擾亂你。謝謝,到下一個錯誤! – tdbridger