我儿子正在尝试学习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()
他昨天花了很多时间在这件事上,希望能得到任何帮助 谢谢
首先,您发布的代码出现了一些错误,因此需要修复这些错误:
tk()
替换为~~~Tk()~~Toplevel()
(请参见注释)'#00c714'
替换'00c714'
"login")
现在它变得“编译”时无错误。至于你的问题,有两件事需要改变:
当我们需要给按钮一个回调/命令时,我们给函数本身,而不是调用它!在下面,}(注意缺乏偏执)。实际上,这里也是这么做的:
command=main()
将导致在程序运行时立即调用main
(无需按to按钮)。相反,我们应该做{command=window1.destroy
-我们需要给出函数本身,当按下按钮时,tkinter会用parantises调用它eone == "user"
这将tkinter条目小部件直接与字符串“user”进行比较!您的意思是通过get
条目的方法:eone.get() == "user"
。这同样适用于etwo
总的来说,下面是经过这些修改的代码(以及一些符合PEP-8的格式):
相关问题 更多 >
编程相关推荐