我正试着做一个登录程序,但我不能让它工作
当我运行代码并在右边的Username
和Password
中键入时,它表示输入错误
import tkinter
window = tkinter.Tk()
window.title('LoginPage')
gebruikersnaam = 'Donald'
wachtwoord = 'Trump'
lblUsername = tkinter.Label(window,text='Username:')
lblUsername.pack(fill=tkinter.X)
entUsername = tkinter.Entry(window)
entUsername.pack(fill=tkinter.X)
lblPassword = tkinter.Label(window,text='Password:')
lblPassword.pack(fill=tkinter.X)
entPassword = tkinter.Entry(window)
entPassword.pack(fill=tkinter.X)
lblResult = tkinter.Label(window)
lblResult.pack(fil=tkinter.X)
def checkLogin(username,password):
if str(username) == gebruikersnaam and str(password) == wachtwoord:
lblResult.configure(text='Login was succesfull')
else:
lblResult.configure(text='Username or Password is wrong')
btn = tkinter.Button(window,text='Login',command= lambda x=entPassword.get(), y=entUsername.get():checkLogin(y,x))
btn.pack(fill=tkinter.X)
window.mainloop()
现在,代码一运行就调用
get()
方法,这就是为什么会得到空值和“错误的输入”。您需要使
get()
方法在单击按钮之后运行,以便给用户一些时间来实际输入一些值所以您应该将
Entry
作为参数传递,并在lambda内部调用get()
方法但是我认为,应该使用一个包装器函数来调用
checkLogin
,而不是lambda
。这使得你的代码更容易阅读和遵循编辑:然而,更好的方法是(感谢来自Bryan Oakley的注释),从方法中删除参数并在其中获取这些值
相关问题 更多 >
编程相关推荐