import Tkinter as tk
import os, time, smtplib
top = tk.Tk()
top.withdraw()
def pause(n):
time.sleep(n)
def clear():
os.system('cls')
def valueGET(val1, val2):
top.withdraw()
user = val1 + "@gmail.com"
pswd = val2
try:
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(user, pswd)
except smtplib.SMTPAuthenticationError:
print "Sorry, wrong password and/or username"
pause(1)
clear()
login()
print "sucess"
def login():
top.deiconify()
L1 = tk.Label(top, text="User Name")
L1.grid(row=0, column=0)
E1 = tk.Entry(top, bd = 5)
E1.grid(row=0, column=1)
L1 = tk.Label(top, text="Password")
L1.grid(row=1, column=0)
E2 = tk.Entry(top, bd = 5, show="*")
E2.grid(row=1, column=1)
submit = tk.Button(top, text="Submit", width=15, command=lambda: valueGET(E1.get(), E2.get()))
submit.grid(row=3, column=1)
top.mainloop()
def main():
print "Do you wish to proceed?"
cont = raw_input("> ").lower()
if cont[0] == "y":
clear()
login()
print "pass"
main()
请原谅我没有准确地描述这个问题,但老实说,我不能想到另一种方式。当我运行代码时,它会一直运行到valueGET(),如果用户和传递是正确的,它应该(我认为突破try块 - 这是因为我放了一个基本的print语句来测试它。但是然后它再次直接进入登录并停在提交按钮(我通过视觉工作室运行它以查看它被卡住的位置,它看起来就像那里)。所以无论如何,如果有人可以帮助澄清这将是伟大的。 ..非常感谢提前
答案 0 :(得分:0)
有一些问题。如果我理解你,你进入except
区块,然后再从那里调用login()。但是,您没有清除top
窗口。该窗口是否应包含两次登录表单?您拨打top.mainloop()
中的login()
,这会导致第二次拨打login()
时第二次运行主循环。
尝试将top.mainloop()
移到login()
之外(可能会移到main()
函数中,不要重新创建窗口内容。