В вашем коде много ошибок, и он не выдает ошибку AttributeError: object has no attribute grid_forget
В моем примере нет проблем с удалением Frame
. Он присваивает Frame
глобальной переменной, а затем другая функция получает доступ к этому Frame
и может удалить его.
import tkinter as tk
import tkinter.ttk as ttk
def input_data():
personal_data_frame.grid_forget()
input_data_frame = ttk.LabelFrame(root)#, weight=0) # ERROR
input_data_frame.grid(row=1, column=0, sticky="NSWE")#, weight=1) # ERROR
def personal_data():
global personal_data_frame
personal_data_frame = ttk.Frame(root)#, weight=1) # ERROR
personal_data_frame.grid(row=1, column=0)
root = tk.Tk()
personal_data()
input_data()
root.mainloop()
У вас могут возникнуть проблемы AttributeError: object has no attribute grid_forget
, если вы назначите что-то другое, чем виджет tkinter для personal_data_frame
- т.е. строка object()
и т. д.
Этот код показывает ошибку AttributeError: object has no attribute grid_forget
, потому что я присваиваю object()
personal_data_frame
после personal_data()
, а object()
не имеет метода grid_forget()
import tkinter as tk
import tkinter.ttk as ttk
def input_data():
personal_data_frame.grid_forget()
input_data_frame = ttk.LabelFrame(root)#, weight=0) # ERROR
input_data_frame.grid(row=1, column=0, sticky="NSWE")#, weight=1) # ERROR
def personal_data():
global personal_data_frame
personal_data_frame = ttk.Frame(root)#, weight=1) # ERROR
personal_data_frame.grid(row=1, column=0)
root = tk.Tk()
personal_data()
personal_data_frame = object()
input_data()
root.mainloop()