Ciao e grazie per la risposta. Ho provato a seguire le tue indicazioni. Ho fatto bene?
Successivamente, come da previsione, si è creato un nuovo errore che ho tentato di risolvere ...generando così un ulteriore nuovo errore... Ti mostro l'ultimo codice.
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)
self.interruttore_switch_calendario=Switch(self.frameTop2, self.frameTop_calendario)
class Calendario():
def __init__(self, master):
self.frameTop_calendario=tk.Frame(master, bg='red')
self.frameTop_calendario.grid(row=1, column=0, sticky="wens")
self.frameTop_calendario.grid_propagate()
self.bottone=tk.Button(self.frameTop_calendario, bg='white', relief="flat")
self.bottone.grid(row=0, column=0)
self.label=tk.Label(self.frameTop_calendario, text='Calendario!', font=('MV Boli', 16), bg='white')
self.label.grid(row=0, column=1, padx=35)
class Top():
def __init__(self, master):
self.frameTop=tk.Frame(master, bg='violet')
self.frameTop.grid(row=0, column=0, sticky="wens")
self.frameTop.grid_propagate()
self.bottone=tk.Button(self.frameTop, bg='white', relief="flat", command=self.switch)
self.bottone.grid(row=0, column=0)
self.label=tk.Label(self.frameTop, text='Hello!', font=('MV Boli', 16), bg='white')
self.label.grid(row=0, column=1, padx=35)
class Top2():
def __init__(self, master):
self.frameTop2=tk.Frame(master, bg='yellow')
self.frameTop2.grid(row=1, column=0, sticky="wens")
self.frameTop2.grid_propagate()
self.bottone=tk.Button(self.frameTop2, bg='white', relief="flat")
self.bottone.grid(row=0, column=0)
self.label=tk.Label(self.frameTop2, text='Hello!', font=('MV Boli', 16), bg='white')
self.label.grid(row=0, column=1, padx=35)
class Top3():
def __init__(self, master):
self.frameTop3=tk.Frame(master, bg='pink')
self.frameTop3.grid(row=2, column=0, sticky="wens")
self.frameTop3.grid_propagate()
self.bottone=tk.Button(self.frameTop3, bg='white', relief="flat")
self.bottone.grid(row=0, column=0)
self.label=tk.Label(self.frameTop3, 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()
Già che ci siamo, mi diresti cortesemente se questo schema è corretto? Vorrei confrontarmi sulla teoria.
class Dog: # def classe (fabbrica con modello)
def __init__(self, name):
self.name=name # crea attributo istanza [attivazione attributi]
def print_name(self): # def metodo (istruzione) <-- accede all'attributo istanza
print(self.name)
dog=Dog('Rex') # crea istanza (oggetto che segue il modello)
dog.name # accede all'attributo istanza & chiama valore -->'Rex'
dog.print_name() # chiama istruzione & la applica all'istanza
# il "self" è riportato in automatico, si può omettere
# [stamperà --> Rex]
dog.name='Gigi' # accede all'attributo istanza e cambiare valore:
# DICHIARARE ATTRIBUTI DI CLASSE
# oppure "attributo=valore"
dog.name # chiama valore
dog.print_name() # stampa valore [perché è istruzione fabbrica]
'''
ATTRIBUTI:
"istanza" <--- accessibili solo all'istanza
<--- definito da __init--
"classe" <--- accessibili da classe e sue istanze
<--- dichiarato durante definizione classe
'''
class Dog:
scientific_name='Canis lupus familiaris' # attributo classe definito
def __init__(self, name):
self.name=name # attributo istanza dichiarato
def print_name(self): # def metodo (istruzione) <-- accede all'attributo istanza
print(self.name)
rex = Dog('Rex')
fido = Dog('Fido') # create due istanze
rex.name # chiamare valori istanze -->'Rex', 'Fido'
fido.name
Dog.scientific_name # chiamare valore classe da classe
# --->'Canis lupus familiaris'
# [si è acceduto agli ATTRIBUTI di ISTANZA & CLASSE
rex.scientific_name # chiamare valore classe da istanze
fido.scientific_name
rex.print_name()