Как мне уничтожить главный экран после успешного входа в систему

#python #tkinter

Вопрос:

Я прочитал сообщение, которое очень похоже на мое, но я не могу ввести указанную функцию в свой код, поэтому я здесь, чтобы спросить. Я делаю экран входа в систему, и я хотел бы уничтожить все экраны, когда у меня будет успешный вход в систему.

Это главный экран :

 def main_screen():  global screen  screen = Tk()  screen.geometry("500x450")  screen.title("COVID-19 VACCINE REGISTRATION PROGRAM")  screen.config(bg="lavender", border ="10",borderwidth="15")  Label(text = "USER LOGIN AND SIGN UP" , bg = "darkblue", fg="white" , height ="4", width ="400", font =("Times New Roman", 15)).pack() #label  Label(text = "").pack() #.pack() =gt; to put widgets in frame.  Button(text = "LOGIN ", bg = "firebrick", fg = "white", height = "4", width ="30", font =("Times New Roman", 15) ,command = login ).pack() #login button  Label(text = "").pack() #empty for space  Button(text = "REGISTER", bg ="firebrick", fg ="white" , height = "4", width ="30", font =("Times New Roman", 15), command = register ).pack() #register new account button   screen.mainloop()  

Это логин для подтверждения :

 def login_succesful():  global screen_3  screen_3=Toplevel(screen)  Label(screen_3,text="").pack()  screen_3.title("Succesful login attempt") #to create a pop up showing login attempt is succesful  screen_3.geometry("250x200")  screen_3.config(bg="lavender")  Label(screen_3,text="").pack()  Label(screen_3,text = "LOGIN ATTEMPT SUCCESFUL", fg = "green" ,font = ("Times New Roman",12)).pack()  Label(screen_3,text="").pack()  Button(screen_3,text = "Done", command = delete2 , bg = "maroon" , fg = "white").pack()  

и это деф удаления :

 def delete2():  screen_3.destroy()   main_screen.destroy()   

и ошибка, которую я получаю, совпадает с сообщением, но, как я уже сказал, я не могу реализовать указанное предложение в своем коде.

Ошибка : Ошибка атрибута: объект «функция» не имеет атрибута «уничтожить»

Комментарии:

1. main_screen это функция, которая создала главный экран, а не сам главный экран. Экран является локальной переменной screen внутри этой функции, и он недоступен за пределами функции. Я бы предложил return включить эту переменную и позвонить screen.mainloop() от вызывающего абонента. Затем у вас есть это значение в вашем коде, и вы можете использовать его для уничтожения этого экрана.

2. О, спасибо, я решил эту проблему.

3. Если вы решили проблему, пожалуйста, опубликуйте и примите ответ, чтобы другие пользователи могли извлечь из него выгоду. Это нормально, на самом деле мы призываем вас ответить на свой собственный вопрос.

Ответ №1:

main_screen был функцией. Воспользуйся screen.destroy()