'''
ARGOMENTI:

    - Widget
			Elemento dell'interfaccia utente: pulsante, barra di scorrimento, 
			campo testo, etichetta, etc. etc.



	- 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("300x600+100+300")
fin.title("Applicazione")

#------------------------------------------------- widget
# etichetta: testo o immagine
lbl = Label(text="Etichetta").pack()                

# pulsante
btn = Button(text="Pulsante").pack()        

# input     
ent = Entry(text="Entry")                   
ent.insert(0,"Default")
ent.pack()

# area di testo
txt = Text(height=2, width=20)                  
txt.pack()
txt.insert(INSERT, "Testo riga 1\n")
txt.insert(INSERT, "Testo riga 2")

# check button
# Per utilizzare, in futuro, il "widget" è necessario creare una variabile Tkinter. 
# Per "ispezionare" il suo stato si puo' "interrogare" la variabile.
varCheck=0
chk = Checkbutton(text="Check Button",variable=varCheck)
chk.pack()

# radio button
varRadio=StringVar()
varRadio.set("2") # default
rbt = Radiobutton(text="Primo", variable=varRadio, value="1")
rbt.pack(anchor=W)          # anchor=W: allinea a sinistra
rbt = Radiobutton(text="Secondo", variable=varRadio, value="2")
rbt.pack(anchor=W)
rbt = Radiobutton(text="Terzo", variable=varRadio, value="3")
rbt.pack(anchor=W)

# scale 
met1 = Scale(from_=0, to=100)
met1.pack()
met2 = Scale(from_=0, to=100, orient=HORIZONTAL)
met1.pack()
met2.pack()

# spinbox 
spin = Spinbox(from_=0, to=10)
spin.pack()


# list box con scrollbar
scr = Scrollbar()                       # definisco la scrollbar
lst = Listbox(yscrollcommand=scr.set)   # definisco la lista con scrollbar associata
for i in range(1,250):					# "riempio" la lista
    lst.insert(END, str(i))
scr.config(command=lst.yview)           # collego la scrollbar alla lista
scr.pack(side=RIGHT, fill=Y)
lst.pack(side=RIGHT, fill=Y)
#--------------------------------------------------------

fin.mainloop()









