#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()