首页 > 解决方案 > 我的 btn_enter 在它被点击后不起作用。我究竟做错了什么。我希望它只工作三遍,然后它应该停止工作

问题描述

彩票功能

# imported modules
from tkinter import *
import smtplib
import random

根窗口

# creating window
root= Tk()
root.geometry("650x450")
root.resizable(False,False)
root.title("Tiffin Seva")
root.configure(bg="Light blue")

变量 # 变量 var1 = StringVar() var_email = StringVar() var_email2 = StringVar()

电子邮件收件人输入字段

user_email = Entry(root,textvariable=var_email, width=40)
lb_mail = Label(root, text="Enter your Email address below.", bg="light blue")
user_email.place(x=200,y=50)
lb_mail.place(x=200,y=10)

定义函数 #defining functions def inbox(): box = Listbox(root,bg="light blue", bd=10, height=15) box.place(x=300,y=0)

def ask():

    try:

        if var_email.get() == "":
            lb_mail.destroy()
            user_email.destroy()
            btn_enter.destroy()
            user_email2 = Entry(root, textvariable=var_email2, width=40, 
bd=5,bg="red")
            lb_mail2 = Label(root, text="You didn't typed your email 1 try 
left.",bg="red")
            user_email2.place(x=200, y=35)
            lb_mail2.place(x=200, y=10)

这个问题没有发布,它说请添加更多细节。

        else:



            def start():

            

                btn_enter.destroy()

                btn_start.destroy()
                lucky_number = random.randint(4000, 5000)
                print(lucky_number)
                email = "dahiyamohit2007@gmail.com"
                password = "Mohit@2007"

                server = smtplib.SMTP('smtp.gmail.com', 587)
                server.ehlo()
                server.starttls()
                server.login(f'{email}', f'{password}')
                print("login successful")

                server.sendmail(f'{email}',
                                f'{user_email.get()}',
                                f"{lucky_number}" + str(",This is your 
lottery spin number."))
                print("message sent successfully")

                lbe = Label(root, text="Enter the lucky number you got in your email")
                lbe.place(x=200, y=170)
                E = Entry(root, textvariable=var1, width=40)
                E.place(x=200, y=200)

            btn_start = Button(root, text="Start The lottery!", bg="gold", 
fg="black", font=("arial", 30), command=start)
            btn_start.place(x=170, y=300)



    except:
        if smtplib.SMTPAuthenticationError:
            l = Label(root, text="There is an error couldn't start your lottery.")
            l.place(x=170,y=350)

这个按钮是我要修复的。当用户在输入字段中没有输入任何内容时,它应该再次工作。

btn_enter = Button(root,text="Enter", bg="gold", fg="black", font=("arial", 30)
               , command=ask)
btn_enter.place(x=200,y=300)

主循环

root.mainloop()

请修复此按钮。

标签: tkinterbutton

解决方案


我没有完全理解您的代码,您没有提供任何错误详细信息和其他内容,但据我了解,在ask功能顶部,您应该检查用户是否点击了 3 次按钮。这是想法。

times=0
def ask():
    global times
    times+=1
    if times<=3:
        #Here all other things you have done

通过这种方式times将计算用户点击按钮的次数并检查它是否小于 3。


推荐阅读