'''
ARGOMENTI:

    - Widget
			contenitori: panedwindow, labelframe, toplevel 
    


	- Metodi di impacchettamento
		
		- pack()
				I "widget" vengono impachettati nel contenitore 
				e sono visualizzati nell'ordine d'impacchettamento.
				Il contenitore si adatta alla grandezza minima necessaria per 
				contenere i "widget" a meno che non vengano specificate le sue dimensioni

		- grid() 
				I "widget" vengono impacchettati nel contenitore che 
				viene organizzato come una "griglia" suddivisa in righe e colonne.
		

		- place()
				I "widget" vengono impacchettati nel contenitore nella posizione 
				e con le dimensioni richieste in termini 
						- assoluti (pixel) o
						- relativi
				alle caratteristiche dimensionali del contenitore.

		- pack_forget(), grid_forget() e place_forget()
				Rimuovono il "widget" dal contenitore


		NOTA: 	una volta scelto un "metodo di impacchettamento" all'interno di un contenitore,
				deve essere utilizzato per tutti i widget


''' 
from tkinter import *

fin = Tk()
fin.geometry("300x400+400+140")
fin.title("Applicazione")

#------------------------------------------------- widget

# panedwindow -------------------------
# creo un primo pannello - Orientamento di default: orizzontale
pnw1 = PanedWindow(bg="red")
pnw1.pack(fill="both")
btnP = Button(pnw1, text="SX")
pnw1.add(btnP)


# creo un secondo pannello e lo inserisco nel primo
pnw2 = PanedWindow(pnw1, orient=VERTICAL, bg="green")
pnw1.add(pnw2)
# creo due pulsanti e li inserisco nel secondo pannello
btnPa = Button(pnw1, text="ALTO")
btnPb = Button(pnw1, text="BASSO")
pnw2.add(btnPa)
pnw2.add(btnPb)


# labelframe 1 -------------------------
lblf1 = LabelFrame(text="Etichetta labelframe")
lblf1.pack(fill="both")
# tutti gli elementi interni
lbl1 = Label(lblf1, text="Etichetta interna").pack() 
btn1 = Button(lblf1, text="Pulsante interno").pack()         
spn1 = Spinbox(lblf1, from_=0, to=20).pack()


# labelframe 2 -------------------------
lblf2 = LabelFrame(text="Etichetta labelframe")
# il secondo labelframe si espande in verticale
lblf2.pack(fill="both",  expand="yes")
lbl2 = Label(lblf2, text="Etichetta interna").pack() 
spn2 = Spinbox(lblf2, from_=0, to=20).pack()        
# pulsante esterno
btn2 = Button(text="Pulsante esterno").pack()
btn3 = Button(text="Chiudimi" , command=fin.destroy).pack()


# toplevel -------------------------------
# Il widget Toplevel funziona come Frame, ma viene visualizzato 
# in una finestra separata di primo livello. 
top = Toplevel()
top.title("Toplevel")
top.geometry("200x100+150+150")
lbltop = Label(top, text="CIAO, sono una toplevel").pack() 
btntp = Button(top, text="Chiudimi", command=top.destroy).pack()
top.mainloop()


fin.mainloop()