Удалить все виджеты после нажатия кнопки? - PullRequest
0 голосов
/ 27 августа 2018

Я создаю систему входа / регистрации с использованием tkinter.Когда пользователь нажимает на кнопку «Войти» или «Зарегистрироваться», я хочу, чтобы все виджеты исчезали, чтобы новые виджеты появлялись на экране в зависимости от того, нажали ли они на кнопку «Войти» или «Зарегистрироваться».Поэтому, если они нажмут на вход в систему, появятся новые метки и текстовые поля для их имени пользователя и пароля.Проблема в том, что я использую .place () и учебники, которые я видел, в основном используют pack_forget или grid_forget

Мой код:

from tkinter import *


class Window:

    def __init__(self, master):

        root.title("Sign Up or Login")
        root.minsize(width=300, height=300)
        root.maxsize(width=300,height=300)

        self.login_button = Button(master, text = "Login", width=18,height=4, command=self.LoginPage)
        self.signup_button = Button(master, text = "Sign Up", width=18,height=4, command=self.SignupPage)

        self.login_button.place(relx=0.5, rely=0.3, anchor=CENTER)
        self.signup_button.place(relx=0.5, rely=0.7, anchor=CENTER)

    def LoginPage(self):
        root.title("Login")

    def SignupPage(self):
        root.title("Sign Up")



root = Tk()

run = Window(root)

root.mainloop()

Мой интерфейс:

Interface

1 Ответ

0 голосов
/ 28 августа 2018

Независимо от того, используете ли вы place, pack или grid. Лучшее решение работает для всех:

for widgets in root.winfo_children():
    widgets.destory()

Он перебирает виджеты и удаляет их. Вы можете попробовать:

from tkinter import *


class Window:

    def __init__(self, master):

        root.title("Sign Up or Login")
        root.minsize(width=300, height=300)
        root.maxsize(width=300,height=300)

        self.login_button = Button(master, text = "Login", width=18,height=4, command=self.LoginPage)
        self.signup_button = Button(master, text = "Sign Up", width=18,height=4, command=self.SignupPage)

        self.login_button.place(relx=0.5, rely=0.3, anchor=CENTER)
        self.signup_button.place(relx=0.5, rely=0.7, anchor=CENTER)

    def LoginPage(self):
        root.title("Login")
        self.Restore()
    def SignupPage(self):
        root.title("Sign Up")
        self.Restore()
    def Restore(self):
            for widgets in root.winfo_children():
                widgets.destroy()


root = Tk()

run = Window(root)

root.mainloop()
...