Najprej pa moramo narediti prostor, kamor bomo hranili naše programe v Pythonu. Naredi torej nov direktorij in mu morda daj ime "PYTHON".
Sestavi naslednji preprost program:
from Tkinter import * # za sestavljanje GUI (iz Tk toolkit) |
Shrani ta program v datoteko "pozdrav.py" in ga poženi.
Polek klasičnega konzolnega okna (v katerem običajno vidiš
izpise
stavkov "print" in druga obvestila) bi se ti moralo prikazati
še
majhno okno, kot ka kaže spodnja slika:
Datoteko "pozdrav.py" preimenuj v "pozdrav.pyw" ,kar pomeni, da je to
program tipa "Python for
Windows". Če ga poženeš, ne bo več (sedaj odvečnega in grdega)
konzolnega okna temveč le grafično.
Najprej povejmo kaj o pojmu "widget". "Widgeti" so komponente grafičnih uporabniških vmesnikov. Gumbi so "widgeti". Oznake (labels) so "widgeti". Vsako okno je widget. Widgete delamo s primernimi orodji (toolkit), v svetu Python uporabljamo kot orodje takoimenovani Tk. V Pythonu obstaja modul za povezavo s Tk, imenuje pa se Tkinter. Zato smo najprej v prvi vrstici uvozili widgete iz modula Tkinter.
Vsak widget je v modulu Tkinter predstavljen z ustreznim
razredom. Tvorimo ga zato kakor druge objekte. Prvi widget, ki smo ga
naredili, je osnovno okno programa. Naredimo ga tako:
okno = Tk()
|
Tako osnovno okno (root window) potrebuje vsak grafični
uporabniški
vmesnik.
V našem primeru smo vanj hoteli zapisati obvestilo
"Pozdravljen
svet!". V ta namen smo uporabili widget "Label", po naše
tekstovno
oznako:
oznaka = Label(okno, text="Pozdravljen svet!")
|
Namesto, da posredujemo argumente
po položaju, omogoča Python posredovanje argumentov po imenu. Sledita
konkretna primera obeh načinov:
def deljenje(stevec,imenovalec): |
Python tudi omogoča definiranje privzetih (default) vrednosti za
argumente. Zato lahko kličemo funkcije, ne da bi definirali vse
parametre. Tako kot na primer:
def stevilkaTelefona(drzava="+386",mesto,stevilka): |
V Tk je ogromno stvari, ki jih lahko določimo pri vsakem widgetu (velikost, barva položaj, smer, besedilo , povratne funkcije (callbacks), itd) in za večino nas niti ne zanimajo njihove vrednosti. Uporabljamo kar privzete (default) vrednosti. Tako so gumbi, okna in druge komponente pogosto kar sive barve. Zato smo v našem primeru klicali konstruktor "Label ( )" le z enim imenovanim parametrom (text), saj nas zanima le to.
V začetku, ko jih naredimo, so widgeti nevidni. Zato moramo
uporabiti naslednjo vrstico:
oznaka.pack()
|
Metoda "pack" pove widgetu, da naj se poveča in pojavi.
Pakiranje widgeta pomeni, da skuša biti čim manjši,
vendar dovolj
velik, da je njegova vsebina vidna. Tako ugotovi widget "oznaka", kako
velik je tekst "Pozdravljen svet!" in svojo velikost postavi temu
primerno. In zatem pove še Tk-ju, da želi biti viden.
V tem hipu je "oznaka" še vedno nevidna, saj je njen oče ("okno") neviden. "okno" postane vidno šele, ko kličemo metodo "mainloop". To je funkcija, ki bo obravnavala izvajanje programa. Več o tem pa v naslednjem poglavju.