代码因某种原因继续返回提交按钮

时间:2017-12-03 21:13:23

标签: python tkinter

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语句来测试它。但是然后它再次直接进入登录并停在提交按钮(我通过视觉工作室运行它以查看它被卡住的位置,它看起来就像那里)。所以无论如何,如果有人可以帮助澄清这将是伟大的。 ..非常感谢提前

1 个答案:

答案 0 :(得分:0)

有一些问题。如果我理解你,你进入except区块,然后再从那里调用login()。但是,您没有清除top窗口。该窗口是否应包含两次登录表单?您拨打top.mainloop()中的login(),这会导致第二次拨打login()时第二次运行主循环。

尝试将top.mainloop()移到login()之外(可能会移到main()函数中,不要重新创建窗口内容。