«Объект NoneType не имеет атрибута« pack_forget »» - PullRequest
0 голосов
/ 15 марта 2019

Когда я пытаюсь запустить .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

сообщение об ошибке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...