tkinter
Tkinter Geometry Managers
Ricerca…
introduzione
Esistono tre gestori di geometria per posizionare i widget: pack()
, grid()
e place()
.
pack ()
Il gestore della geometria pack()
organizza i widget in blocchi prima di posizionarli nel widget padre. Usa le opzioni fill
, expand
e side
.
Sintassi
widget.pack(option)
Riempire
Determina se il widget mantiene lo spazio minimo necessario o occupa uno spazio aggiuntivo ad esso assegnato. Attributi: NONE (predefinito), X (riempimento orizzontale), Y (riempimento verticale) o BOTH (riempimento sia in senso orizzontale che verticale).
Espandere
Se impostato su SÌ, il widget si espande per riempire qualsiasi spazio non utilizzato nel genitore del widget. Attributi: SÌ, NO.
Lato
Determina il lato del genitore del widget a cui è impacchettato. Attributi: TOP (predefinito), BOTTOM, SINISTRA o DESTRA.
Esempio
from tkinter import *
root = Tk()
btn_fill = Button(root, text="Button")
btn_fill.pack(fill=X)
btn_expand = Button(root, text="Button")
btn_expand.pack(expand=YES)
btn_side = Button(root, text="Button")
btn_side.pack(side=RIGHT)
root.mainloop()
Risultato
griglia()
Il gestore della geometria grid()
organizza i widget in una struttura simile a una tabella nel widget principale. Il widget principale è suddiviso in righe e colonne e ciascuna parte della tabella può contenere un widget. Usa column
, columnspan
, ipadx
, ipady
, padx
, pady
, row
, rowspan
e sticky
.
Sintassi
widget.grid(options)
Colonna
La colonna in cui inserire il widget. La colonna predefinita è 0, che è la colonna più a sinistra.
columnspan
Quante widget di colonne occupa. Il valore predefinito è 1.
Ipadx
Quanti pixel riempiono orizzontalmente il widget all'interno dei bordi del widget.
Ipady
Quanti pixel riempiono verticalmente il widget all'interno dei bordi del widget.
padx
Quanti pixel riempiono il widget orizzontalmente al di fuori dei bordi del widget.
Pady
Quanti pixel riempiono verticalmente il widget all'esterno dei bordi del widget.
Riga
La riga in cui inserire il widget. La riga predefinita è 0, che è la colonna più in alto.
rowspan
Quante righe occupa il widget. Il valore predefinito è 1.
Appiccicoso
Quando il widget è più piccolo della cella, viene utilizzato sticky
per indicare a quali lati e angoli della cella si attacca il widget. La direzione è definita dalle direzioni della bussola: N, E, S, W, NE, NW, SE e SW e zero. Questi potrebbero essere una concatenazione di stringhe, ad esempio NESW fa in modo che il widget occupi l'intera area della cella.
Esempio
from tkinter import *
root = Tk()
btn_column = Button(root, text="I'm in column 3")
btn_column.grid(column=3)
btn_columnspan = Button(root, text="I have a columnspan of 3")
btn_columnspan.grid(columnspan=3)
btn_ipadx = Button(root, text="ipadx of 4")
btn_ipadx.grid(ipadx=4)
btn_ipady = Button(root, text="ipady of 4")
btn_ipady.grid(ipady=4)
btn_padx = Button(root, text="padx of 4")
btn_padx.grid(padx=4)
btn_pady = Button(root, text="pady of 4")
btn_pady.grid(pady=4)
btn_row = Button(root, text="I'm in row 2")
btn_row.grid(row=2)
btn_rowspan = Button(root, text="Rowspan of 2")
btn_rowspan.grid(rowspan=2)
btn_sticky = Button(root, text="I'm stuck to north-east")
btn_sticky.grid(sticky=NE)
root.mainloop()
Risultato
posto()
Il gestore place()
organizza i widget posizionandoli in una posizione specifica nel widget principale. Questo gestore di geometria utilizza le opzioni anchor
, bordermode
, height
, width
, relheight
, relwidth
, relx
, rely
, x
e y
.
Ancora
Indica dove è ancorato il widget. Le opzioni sono le direzioni della bussola: N, E, S, W, NE, NW, SE o SW, che si riferiscono ai lati e agli angoli del widget principale. L'impostazione predefinita è NW (l'angolo in alto a sinistra del widget)
Bordermode
Bordermode ha due opzioni: INSIDE
, che indica che le altre opzioni si riferiscono ai genitori all'interno, (Ignorando i bordi del genitore) e OUTSIDE
, che è il contrario.
Altezza
Specificare l'altezza di un widget in pixel.
Larghezza
Specificare la larghezza di un widget in pixel.
Relheight
Altezza come float tra 0.0 e 1.0, come frazione dell'altezza del widget genitore.
Relwidth
Larghezza come float tra 0.0 e 1.0, come frazione della larghezza del widget genitore.
relx
Offset orizzontale come float tra 0.0 e 1.0, come frazione della larghezza del widget genitore.
fare affidamento
Offset verticale come float tra 0.0 e 1.0, come frazione dell'altezza del widget genitore.
X
Offset orizzontale in pixel.
Y
Offset verticale in pixel.
Esempio
from tkinter import *
root = Tk()
root.geometry("500x500")
btn_height = Button(root, text="50px high")
btn_height.place(height=50, x=200, y=200)
btn_width = Button(root, text="60px wide")
btn_width.place(width=60, x=300, y=300)
btn_relheight = Button(root, text="Relheight of 0.6")
btn_relheight.place(relheight=0.6)
btn_relwidth= Button(root, text="Relwidth of 0.2")
btn_relwidth.place(relwidth=0.2)
btn_relx=Button(root, text="Relx of 0.3")
btn_relx.place(relx=0.3)
btn_rely=Button(root, text="Rely of 0.7")
btn_rely.place(rely=0.7)
btn_x=Button(root, text="X = 400px")
btn_x.place(x=400)
btn_y=Button(root, text="Y = 321")
btn_y.place(y=321)
root.mainloop()
Risultato