[&]
3.22.51.241
workshop: #lesson-6.html
python3-tk
AD
mod5
py
Aby renderowanie Widgetów TK było możliwe należy zaimportować z pakietu tkinter wszystkie klasy Widgetów do skryptu aplikacji. Klasy w Pythonie instancjonowane są BEZ słówka kluczowego new. Osoby, które kodowały i modyfikowały system Linux powinny być zaznajomione ze słówkiem geometry, które oznacza rozmiar (często również pozycję) wskazanego elementu. W tym przypadku jest to rozmiar okna podany jako ciąg znakowy String dla właściwości szerokości i wysokości odpowiednio.
tkinter
geometry
W przeciwieństwie do aplikacji pisanych w innych językach, gdzie składowe programu należało umieścić w metodzie main (Java, C) we frameworku TK Pythona jako ciało pętli jest traktowany cały kod do metody pętli mainloop()
main
TK
mainloop()
We frameworku TK możemy wyróżnić trzy sposoby (metody) układania elementów:
pack( side=?, expand=?, fill=? ) - upakowuje kontrolki jedna po drugiej w domyślne lub wskazane miejsce (LEFT, TOP, RIGHT, BOTTOM) Okna lub Ramki. W tym miejscy należy zaznaczyć podobieństwo do BorderLayout z Javy jedynie z pominięciem nieistniejącej w Pythonie przestrzeni CENTER.
pack( side=?, expand=?, fill=? )
LEFT
TOP
RIGHT
BOTTOM
BorderLayout
CENTER
place( x=?, y=? ) - pozwala rozlokować wskazaną kontrolkę we wskazanej pozycji x,y co jest synonimem pozycjonowania absolutnego.
place( x=?, y=? )
x
y
grid( row=?, column=? ) - tworzy siatkę o rozmiarze najwyższej wartości wiersza i kolumny oraz umieszcza kontrolkę w podanej komórce siatki. Komórki siatki posiadają możliwość łączenia się z sąsiednimi komórkami dzięki atrybutom: columnspan oraz rowspan. Za rozmieszczenie kontrolek komórki lub treści w komórce służą atrybuty: stricky oraz anchor
grid( row=?, column=? )
columnspan
rowspan
stricky
anchor
Powyższe metody: pack(), place() oraz grid() można wywołać a) na zmiennej referencyjnej kontrolki lub b) zaraz za samą kontrolką co przedstawia kod:
lbl1 = Label(box, text="Etykieta") lbl1.pack()
Label(box, text="Etykieta").pack()
Efekt programu z listingu 5.3 przedstawia poniższe zdjęcie, na którym Frame z żółtym tłem jest rozciągnięty na całą szerokość okna, natomiast Frame z niebieskim tłem znajduje się pomiędzy Framem czerwonym, a zielonym.
listingu 5.3
Co jednak zrobić, żeby osiągnąć inne efekty, np.: