Когда я пытаюсь запустить .pack_forget () для атрибута 'canvas' объекта 'start screen' в функции reveregisterscreen (), возникает ошибка (изображение ниже).
Почему это происходит?Пожалуйста, помогите!
Атрибут 'canvas' определен в стандартном классе классов
Атрибут 'button2' определен в стандартном классе классов (это кнопка регистрации, которая при нажатии вызываетподпрограмма «открыть регистры экрана»)
class standardclass:
def __init__(self, labeltext, b1t, b1c, b2t, b2c): #creates the initalization subroutine and passes the parameters in the bracket
self.canvas = Canvas(root, width=600, height=600, highlightthickness=0, bg='#A9E2f3').pack()
self.titlelabel = Label(self.canvas, text=labeltext, font=('Arial', 30), bg='#A9E2f3').place(x=125,y=20)
self.button1 = Button(self.canvas, text=b1t, command=b1c, font=('Arial', 30), relief='flat').place(x=100,y=550)
self.button2 = Button(self.canvas, text=b2t, command=b2c, font=('Arial', 30), relief='flat').place(x=350,y=550)
class entryfieldclass(standardclass):
def __init__(self, labeltext, b1t, b1c, b2t, b2c):
standardclass.__init__(self, labeltext, b1t, b1c, b2t, b2c) #calls the class's parent class's intialization subroutine
self.usernamelabel = Label(self.canvas, text='Username: ', font=('Arial', 30), bg='#A9E2f3').place(x=100, y=250)
self.passwordlabel = Label(self.canvas, text='Password: ', font=('Arial', 30), bg='#A9E2f3').place(x=100, y=300)
self.usernameentryfield = Entry(self.canvas, font=('Arial', 30)).place(x=275,y=250, width=200)
self.passwordentryfield = Entry(self.canvas, font=('Arial', 30), show='*').place(x=275,y=300, width=200)
def temporarysubroutine():
print("The 'temporary subroutine' subroutine was run.")
def revealregisterscreen():
startscreen.canvas.pack_forget()
registerscreen = entryfieldclass('Register', 'Register', temporarysubroutine, 'Back', registerscreenback)
def registerscreenback():
registerscreen.canvas.pack_forget()
startscreen.canvas.pack()
global startscreen
startscreen = entryfieldclass('Maths Revision Program', 'Login', temporarysubroutine, 'Register', revealregisterscreen)
GUI
сообщение об ошибке