Удалить объект, состоящий из нескольких виджетов tkinter - PullRequest
0 голосов
/ 21 февраля 2019

В моей программе у меня есть объект startscreencanvas.Он состоит из холста, надписей виджетов и кнопок.Я хочу удалить объект, включая все его виджеты.Как я могу это сделать?Пожалуйста, помогите!

Код:

class createcanvas:
    def __init__(self, master, title, button1text, button1command, button2text, button2command, screen):
        master.canvas = Canvas(root, width=610, height=610, bg='#82f2ff', borderwidth=0, highlightthickness=0)
        master.canvas.pack()
        #   
        self.titlelabel = Label(master.canvas, image=photo1)
        self.titlelabel.place(x=0, y=100, width=600, height=100)
        #
        self.button1 = Button(master.canvas, text=button1text, command=button1command, relief = 'groove', font=("Ariel", 30))
        self.button1.place(x=100, y=450)
        #
        self.button2 = Button(master.canvas, text=button2text, command=button2command, relief = 'groove', font=("Ariel", 30))
        self.button2.place(x=350, y=450)
        #
        if screen == 'loginscreen':
            usernamelabel = Label(master.canvas, image=photo2, relief = 'flat')
            usernamelabel.place(x=95, y=250, width=175, height=50)
            #
            global usernameentry
            usernameentry = Entry(master.canvas, relief = 'groove',  font=("Ariel", 30))
            usernameentry.place(x=275, y=250, width=200, height=50)
            #
            passwordlabel = Label(master.canvas, image=photo3, relief = 'flat')
            passwordlabel.place(x=95, y=300, width=175, height=50)
            #
            global passwordentry
            passwordentry = Entry(master.canvas, relief = 'groove', show="*", font=("Ariel", 30))
            passwordentry.place(x=275, y=300, width=200, height=50)



def startscreen():
    global startscreencanvas
    startscreencanvas = createcanvas(root, 'Maths revision program', "Login", login,
                                     "Register", register, "loginscreen")

startscreen()
root.mainloop()

1 Ответ

0 голосов
/ 21 февраля 2019

Если вы сделаете createcanvas подклассом виджета tkinter (например, Canvas), уничтожение экземпляра уничтожит все дочерние виджеты.

В противном случае вам нужно изменить свой код, чтобы вы могливызовите метод destroy внутреннего холста.Поскольку все остальные виджеты являются дочерними элементами холста, при удалении холста дочерние виджеты будут автоматически уничтожены.

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