Удалить все виджеты после нажатия кнопки?
Я создаю систему входа / регистрации с использованием 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()
Мой интерфейс:
1 ответ
Неважно, вы используете 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()