Apr-30-2021, 08:06 PM
Hi! I want to create a class with two parameters: the old area & the new area.
Instruction: destroy the old area and replace it with the new one.
What am I wrong in reasoning?
AttributeError: '_tkinter.tkapp' object has no attribute 'switch'
Windows 10, Python 3.9
Instruction: destroy the old area and replace it with the new one.
What am I wrong in reasoning?
AttributeError: '_tkinter.tkapp' object has no attribute 'switch'
Windows 10, Python 3.9
import tkinter as tk class Switch(): def __init__(self, old_top, new_top): self.old_top=old_top self.new_top=new_top def switch(self): self.old_top.destroy() self.new_top=self.new_top(root) class Calendario(): def __init__(self, master): frameTop=tk.Frame(master, bg='red') frameTop.grid(row=1, column=0, sticky="wens") frameTop.grid_propagate() self.bottone=tk.Button(frameTop, bg='white', relief="flat") self.bottone.grid(row=0, column=0) self.label=tk.Label(frameTop, text='Calendario!', font=('MV Boli', 16), bg='white') self.label.grid(row=0, column=1, padx=35) class Top(): def __init__(self, master): frameTop=tk.Frame(master, bg='violet') frameTop.grid(row=0, column=0, sticky="wens") frameTop.grid_propagate() self.bottone=tk.Button(frameTop, bg='white', relief="flat", command=lambda: master.switch(Top2 ,Calendario)) self.bottone.grid(row=0, column=0) self.label=tk.Label(frameTop, text='Hello!', font=('MV Boli', 16), bg='white') self.label.grid(row=0, column=1, padx=35) class Top2(): def __init__(self, master): frameTop=tk.Frame(master, bg='yellow') frameTop.grid(row=1, column=0, sticky="wens") frameTop.grid_propagate() self.bottone=tk.Button(frameTop, bg='white', relief="flat") self.bottone.grid(row=0, column=0) self.label=tk.Label(frameTop, text='Hello!', font=('MV Boli', 16), bg='white') self.label.grid(row=0, column=1, padx=35) class Top3(): def __init__(self, master): frameTop=tk.Frame(master, bg='pink') frameTop.grid(row=2, column=0, sticky="wens") frameTop.grid_propagate() self.bottone=tk.Button(frameTop, bg='white', relief="flat") self.bottone.grid(row=0, column=0) self.label=tk.Label(frameTop, text='Hello!', font=('MV Boli', 16), bg='white') self.label.grid(row=0, column=1, padx=35) root=tk.Tk() root.title('Hi!') root.configure(bg='white') Top1=Top(root) Top2=Top2(root) Top3=Top3(root) root.mainloop()