私のアプリケーション用の基本的なログインを作成しようとしています(複雑なことは気にせず、A Levelプロジェクト)。 checklogin関数では、ユーザが入力したユーザ名を取得しようとしています。データベースにすでに入っているかどうかを確認し、後でパスワードが一致するかどうかを確認するビットを追加します。しかし、私はエラー 'NameError:自由変数' userentry 'が囲みスコープ内で代入される前に参照され続ける。このエラーを見ると、通常の理由は、「userentry」が後で同じ機能に再割り当てされるためです。しかし、私はこれがどこにあるかを見るのに苦労しています。どんな助けもありがとう。このコードGetting NameError:代入前に参照されている空き変数ですが、どこで見たことがないかわかりません
loginbtn = tk.Button(self,
text="Log In",
fg="lightgreen",
bg="darkgreen",
height="3",
width="12",
command = check_login())
変化command = check_login()
command = check_login
に(括弧なし)で
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