不读取文件的Python密码验证

2024-09-29 11:20:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我儿子正在尝试学习python,想知道是否有人能在这方面提供帮助

我们面临的问题是,我们无法让密码验证工作。没什么特别的, 第一个窗口-输入名称和密码

如果正确-将弹出第二个窗口

如果不正确,将弹出-3窗口

我们有下面的代码,但是第三个窗口也会弹出

我怀疑这与def main或variable有关

from tkinter import*

window1=Tk()
window1.title("First window")

username="user"
password="password"

def main():
    if eone == "user" and etwo == "password":
        master=tk()
        master.title("second window")
    else:
        master1=tk()
        master1.title("third window")

Label(window1, text="username").grid(row=0)
Label(window1, text="password").grid(row=1)

eone=Entry(window1)
etwo=Entry(window1, show='*')

eone.grid(row=0, column=1)
etwo.grid(row=1, column=1)

b1 = Button(window1, text="login") ,bg='00c714',fg='#ffffff',command=main())
b1.grid(row=3, column=0, sticky=E)

b2=Button(window1, command=window1.destroy, text="exit", bg='#fc0303' ,fg='#ffffff')
b2.grid(row=3, column=1, sticky=E)

mainloop()

他昨天花了很多时间在这件事上,希望能得到任何帮助 谢谢


Tags: text密码titlemaindefusernamecolumnpassword
1条回答
网友
1楼 · 发布于 2024-09-29 11:20:42

首先,您发布的代码出现了一些错误,因此需要修复这些错误:

  • tk()替换为~~~Tk()~~Toplevel()(请参见注释)
  • '#00c714'替换'00c714'
  • 删除此处的偏执"login")

现在它变得“编译”时无错误。至于你的问题,有两件事需要改变:

  1. 当我们需要给按钮一个回调/命令时,我们给函数本身,而不是调用它!在下面,command=main()将导致在程序运行时立即调用main(无需按to按钮)。相反,我们应该做{}(注意缺乏偏执)。实际上,这里也是这么做的:command=window1.destroy-我们需要给出函数本身,当按下按钮时,tkinter会用parantises调用它

  2. eone == "user"这将tkinter条目小部件直接与字符串“user”进行比较!您的意思是通过get条目的方法:eone.get() == "user"。这同样适用于etwo

总的来说,下面是经过这些修改的代码(以及一些符合PEP-8的格式):

from tkinter import*

window1 = Tk()
window1.title("First window")

username = "user"
password = "password"

def main():
    # Change here: using `get` to get what is written in entries
    if eone.get() == "user" and etwo.get() == "password":
        master = Toplevel()
        master.title("second window")
    else:
        master1 = Toplevel()
        master1.title("third window")

Label(window1, text="username").grid(row=0)
Label(window1, text="password").grid(row=1)

eone = Entry(window1)
etwo = Entry(window1, show='*')

eone.grid(row=0, column=1)
etwo.grid(row=1, column=1)

# Change here: using function `main` itself instead of calling it
b1 = Button(window1, text="login", bg="#00c714", fg="#ffffff", command=main)
b1.grid(row=3, column=0, sticky=E)

b2 = Button(window1, command=window1.destroy, text="exit", bg="#fc0303", fg='#ffffff')
b2.grid(row=3, column=1, sticky=E)

mainloop()

相关问题 更多 >