FPR p09
FPR p09
3
Python, bitmape
• Bitmape koje se pripremljene su: "error", "gray75", "gray50", "gray25", "gray12",
"hourglass", "info", "questhead", "question", "warning".
9
Python, GUI
• Python obezbeđuje razvoj grafičkog programskog interfejsa (GUIs).
• Slede neki od GUI interfejsa:
– Tkinter: je Python interfejs za Tk GUI alat koji se isporučuje uz Python.
– wxPython: je open-source Python interfejs za wxWindows
http://wxpython.org.
– JPython: JPython je Python port za Javu gde se korišćenjem Python
skriptova pristupa Java (class) bibliotekama na lokalnom
računaru http://www.jython.org.
Tkinter programiranje
• Tkinter je standardna GUI biblioteka za Python.
• Tkinter obezbeđuje moćan objektno orijentisan interfejs.
• Da bi se kreriala GUI aplikacija korišćenjem Tkinter-a potrebno je da se uradi kao
što sledi:
– Import modula tkinter.
– Kreiranje glavnog prozora GUI aplikacije.
– Dodavanje widget-a u GUI aplikaciju.
– Ulazak u petlju za osluškivanje događaja koje pokreće korisnik.
10
Python, tkinter
• Primer:
#!/usr/bin/python
import tkinter
top = tkinter.Tk()
# Code to add widgets will go here...
top.mainloop()
Tkinter widget-i
• Tkinter obezbeđuje različite kontrole (buttons, labels, text boxes ...) koje se
koriste u GUI aplikacijama. Ove kontrole se nazivaju widget-ima.
• Slede opisi widget-a:
– Button koristi se za prikaz programskog dugmeta.
– Canvas omogućuje crtanje oblika (lines, ovals, polygons, rectangles).
– Checkbutton prikazuje više opcija od kojih se može odabrati
bilo koja kombinacija.
– Entry koristi se za prikaz polja za unos linije teksta i prihvatanje
vrednosti koju unese korisnik.
– Frame koristi se kao kontejner za organizaciju drugih widget-a.
– Label koristi se da obezbedi liniju naslova widget-a.
Može sadržavati sliku.
11
Python, tkinter
– Listbox koristi se da omogući listu opcija za korisnika.
– Menubutton dugme za meni
– Menu meni.
– Message koristi se za prikaz višelinijskog tekst polja.
– Radiobutton prikazuje opcije kao radio dugmad pri čemu korisnik
može da selektuje samo jednu opciju.
– Scale obezbeđuje korišćenje slajdera.
– Scrollbar skrolovanje različitih widget-a kao npr. list box-ova.
– Text prikazuje višelinijski tekst.
– Toplevel obezbeđuje odvojeni window kontejner.
– Spinbox varijanta entry widget-a koji se koristi da selektuje
jednu od fiksnog broja vrednosti.
– PanedWindow predstavlja kontejner widget koji može da sadrži bilo
koji broj pan-ova aranžiranih horizontalno ili vertikalno.
– LabelFrame je jednostavni kontejner. Koristi se za razmak ili
kontejner za složene rasporede.
– messagebox prikazuje poruku u aplikaciji.
12
Python, Button
w = Button ( master, option=value, ... )
parameteri su kao što sledi:
– master: roditeljski prozor.
– options: opcije, npr:
• activebackground boja pozadine dugmeta pod kursorom.
• activeforeground boja teksta dugmeta pod kursorom.
• bd border u pikselima (podrazumevano 2).
• bg normalna boja pozadine.
• command klik funkcija.
• fg normalna boja teksta.
• font font labele dugmeta.
• height visina dugmeta u linijama teksta za tekstualno
dugme ili pikselima za dugme sa slikom.
• image slika za dugme.
13
Python, Button
• justify poravnanje više linija teksta (LEFT, CENTER, RIGHT).
• padx unutrašnje margine za tekst (left,right).
• pady unutrašnje margine za tekst (up,down).
• relief tip bordera (SUNKEN, RAISED, GROOVE, RIDGE...).
• state podrazumevno stanje je NORMAL, može biti pasivno
(DISABLED), aktivno (ACTIVE, kada je miš iznad
dugmeta).
• underline podrazumevano je -1, a ako je nenegativno onda
pokazuje koji je indeks karaktera u tekstu koji je
podvučen.
• width širina dugmeta u slovima (ako prikazuje tekst) odnosno
pikselima (ako prikazuje sliku)
• wraplength širina za namotavanje teksta (wrap) tako da će tekst biti
namotan u okviru date širine.
14
Python, Button
• Metode
– flash() dugme nekoliko puta blinka menjajući aktivnu i normalnu boju.
Ostavlja dugme u originalnom stanju. Ignoriše se ako je dugme
onemogućeno.
– invoke() poziva callback funkciju dugmeta i vraća što vraća ta funkcija.
Nema efekta ako je dugme onemogućeno ili nema callback
funkcije.
import tkinter
from tkinter import messagebox
top = tkinter.Tk()
def helloCallBack():
messagebox.showinfo( "Hello Python", "Hello World")
15
Python, Checkbutton
w = Checkbutton ( master, option, ... )
parameteri:
• master: roditeljski prozor.
• opcije (navode se kao CSV parovi kay=value), slede primeri:
– activebackground boja pozadine kada je checkbutton ispod kursora.
– activeforeground boja pisanja kada je checkbutton ispod kursora.
– bg normalna boja pozadine koja se prikazuje iza lbele i
indikatora.
– bitmap prikaz slike na dugmetu.
– bd veličina bordera oko indikatora (podrazumevano 2px).
– command procedura koja se poziva kada korisnik promeni stanje
checkbutton-a.
– cursor promena izgleda kursora (arrow, dot, ...) kada je kursor
iznad checkbutton-a.
– disabledforeground boja onemogućenog checkbutton-a.
– font font teksta.
– fg boja teksta.
16
Python, Checkbutton
– height broj linija teksta na checkbutton-u (podrazumevano 1).
– image prikaz slike.
– justify poravnanje teksta (CENTER, LEFT, RIGHT).
– offvalue postavljanje vrednosti za isključen checkbutton
(podrazumevano je 0).
– onvalue postavljanje vrednosti za uključen checkbutton
(podrazumevano je 1).
– padx unutrašnja leva i desna margina (podrazumevano 1px).
– pady unutrašnja gornja i donja margina (podrazumevano
1px).
– relief podrazumevano relief=FLAT
– selectcolor boja setovanog checkbutton-a (podrazumevano "red").
– selectimage slika se pojavljuje ako je checkbutton setovan.
17
Python, Checkbutton
– state podrazumevano state=NORMAL, može se koristiti
state=DISABLED za onemogućavanje (posiveće).
Ako je kursor iznad checkbutton-a state=ACTIVE.
– text tekst labele checkbutton-a (za tekst u više redova koristiti "\n").
– underline podvlačenje karaktera (podrazumevano -1, nema podvlačenja)
teksta labele. Indeks brojan od nule označava koji će karakter
teksta biti podvučen.
– variable kontrolna varijabla koja se odnosi na tekuće stanje checkbutton-a.
(varijabla je IntVar sa vrednostima 0 (nesetovan) i 1 (setovan).
– width podrazumevana širina checkbutton-a je određena veličinom slike
ili teksta. Širina se može se postaviti kao broj karaktera.
– wraplength podrazumevano linije teksta se ne namotavaju. Može se
postaviti vrednost koja označava broj karaktera koji se
odnosi na prelom linije.
18
Python, Checkbutton
• Metode:
– select() uključuje checkbutton.
– deselect() isključuje checkbutton.
– toggle() menja stanje uključenosti checkbutton-a.
– flash() checkbutton blinka aktivnom i normalnom
bojom te ostaje početna boja.
– invoke() kao da je korisnik kliknuo da promeni stanje.
21
Python, Radiobutton
• value vrednost radiobutton-a u grupi (ako je kontrolna varijabla IntVar,
dodeljuje se broj, a ako je kontrolna varijabla StringVar dodeljuje
se string).
• variable varijabla koju dele radiobutton-i u grupi (IntVar ili StringVar).
• width širina labele u karakterima (ako nije data veličina odgovara
sadržaju).
• wraplength prelom linije na datoj dužini u karakterima (podrazumevano 0,
prelom linije je na "\n").
Metode:
• select() uključuje (turns on) the radiobutton.
• deselect() isključuje (turns off) radiobutton.
• flash() radiobutton zablinka (aktivnom i normalnom bojom).
• invoke() programski klik na radiobutton.
22
Python, Radiobutton
from tkinter import *
def sel():
selection = "You selected the option " + str(var.get())
label.config(text = selection)
root = Tk()
var = IntVar()
R1 = Radiobutton(root,text="Option 1", variable=var, value=1, command=sel)
R1.pack( anchor = W )
R2 = Radiobutton(root,text="Option 2", variable=var, value=2, command=sel)
R2.pack( anchor = W )
R3 = Radiobutton(root,text="Option 3", variable=var, value=3, command=sel)
R3.pack( anchor = W)
label = Label(root)
label.pack()
root.mainloop()
23
Python, Canvas
w = Canvas ( master, option=value, ... )
parameteri su kao što sledi:
• master: roditeljski prozor.
• opcije (mogu se navoditi kao CSV parovi key,value), npr:
– bd border u pikselima (podrazumevano 2).
– bg normalna boja pozadine.
– cursor kursor koji se koristi u kanvasu (arrow, circle, dot...).
– width x dimenzija veličine kanvasa.
– height y dimenzija veličine kanvasa.
– relief tip bordera (SUNKEN, RAISED, GROOVE,RIDGE).
– scrollregion n-torka (w, n, e, s) koja definiše kolika se površina
može skrolovati).
24
Python, Canvas
– xscrollincrement vrednost skrolovanja po x osi.
– xscrollcommand linkovanje ka horizontalnom scroll bar-u.
– yscrollincrement vrednost skrolovanja po y osi.
– yscrollcommand linkovanje ka vertikalnom scroll bar-u.
25
Python, Canvas
– create_oval crta krug ili elipsu na datim koordinatama (dva para
koordinata gornji levi ugao i donji desni ugao
okružujućeg pravougaonika).
oval = canvas.create_oval(x0, y0, x1, y1, options)
– create_polygon crta poligon sa najmanje tri vrha.
oval = canvas.create_polygon(x0,y0, x1,y1,...xn, yn, options)
Primer:
import tkinter
top = tkinter.Tk()
C = tkinter.Canvas(top, bg="blue", height=250, width=300)
coord = 10, 50, 240, 210
arc = C.create_arc(coord, start=0, extent=150, fill="red")
C.pack()
top.mainloop()
26
Python, Entry
• Entry widget se koristi za prihvatanje jedne linije teksta korisnika.
– Ako se želi prikaz više linija teksta koji se može editovati onda bi trebalo
koristiti widget Text .
– Ako se želi prikaz jedne ili više linija teksta koje korisnik ne može
modifikovati onda bi trebalo koristiti widget Label.
w = Entry( master, option, ... )
Parametri:
• master: roditeljski prozor.
• options: u CSV formi parova kay=value.
• Slede primeri opcija:
– bg normalna boja pozadine (iza labele i indikatora).
– bd border oko indikatora (podrazumevano 2px).
– cursor oblik kursora (arrow, dot, ...) kada je miš iznad widget-a.
– font font teksta.
27
Python, Entry
– exportselection eksport slektovanog teksta u cliboard (podrazum. 1).
– fg boja pisanja.
– justify poravnanje teksta (CENTER, LEFT, RIGHT).
– relief podrazumevano FLAT, widget nije van svoje pozadine.
– selectbackground boja pozadine selektovanog teksta.
– selectborderwidth border selektovanog teksta (podrazumevano 1px).
– selectforeground boja pisanja selektovanog teksta.
– show određuje prikaz karaktera (npr. za lozinku show="*").
– state stanje (podrazumevano state=NORMAL, može biti
state=DISABLED i state=ACTIVE).
– textvariable veza teksta sa datom varijablom tipa StringVar.
– width širina widget-a daje se u karakterima (podrazumevano
odgovara širini teksta).
– xscrollcommand linkovanje ka scrollbar-u ako se očekuje duži tekst od
prostora za ispis.
28
Python, Entry
Metode:
• delete ( first, last=None ) brisanje karaktera od first indeksa do isključno
last indeksa. Ako je derugi parametar
izostavljen briše se samo karakter čiji je indeks
određen parametrom first.
• get() vraća uneseni tekst kao string.
• icursor ( index ) postavljanje kursora za umetanje pre karaktera čiji je
indeks index.
• index ( index ) pomeranje sadržaja tako da karakter datog indeksa
bude krajnji levi vidljivi karakter. Nema efekta ako je sav
tekst u entry widget-u.
• insert ( index, s ) ubacuje string s pre karaktera datog indeksa.
• select_adjust ( index ) osiguranje da selekcija uključuje karakter datog indeksa.
• select_clear() briše selekciju. Ako nema selekcije onda nema efekta.
• select_from ( index ) postavljanje ANCHOR indeksa i selekcija pripadnog
karaktera.
• select_present() vraća True ako postoji selekcija, inače vraća False.
29
Python, Entry
• select_range ( start, end ) selekcija teksta od startnog indeksa (start) do
isključno završnog indeksa (end). Startna
pozicija mora biti pre krajnje pozicije.
• select_to ( index ) selekcija karaktera od ANCHOR pozicije do
isključno index pozicije.
• xview ( index ) skrolovanje da indeks index bude vidljiv.
• xview_scroll ( number, what ) horizontalno skrolovanje. Argument what
može biti UNITS (skrolovanje za širinu datu u karakterima) ili PAGES
(skrolovanje za veličinu entry widget-a). Ako je parametar number pozitivan
skroluje se desno a ako je negativan onda levo.
from tkinter import *
import tkinter
def prikazi():
print(em.get())
top = tkinter.Tk()
L1 = Label(top, text="User Name"); L1.pack( side = TOP); em = StringVar()
E1 = Entry(top, bd =10, textvariable=em); em.set("default value")
E1.pack(side = RIGHT)
B1 = Button(top, text="pritisni za ispis na konzoli", command=prikazi)
B1.pack(side = BOTTOM)
top.mainloop()
30
Python, Frame
w = Frame ( master, option, ... )
• Parametri:
– master: roditeljski prozor.
– options: u CSV formi parova kay=value.
31
Python, Frame
from tkinter import *
root = Tk()
frame = Frame(root)
frame.pack()
bottomframe = Frame(root)
bottomframe.pack( side = BOTTOM )
root.mainloop()
32
Python, Label
w = Label ( master, option, ... )
Parametri:
– master: roditeljski prozor.
– options: opcije u CSV formi parova kay=value.
• Slede primeri opcija:
– anchor pozicija teksta ako widget ima više prostora nego što ga tekst
zauzima (podrazumevano CENTER).
– bg normalna boja pozadine.
– bitmap za labelu koja prikazuje sliku.
– bd granica oko indikatora (podrazumevano 2px).
– cursor oblik kursora kada je iznad.
– font font teksta labele.
– fg boja teksta labele.
– height vertikalna dimenzija.
– image prikaz statičke slike (image object).
– justify poravnanje teksta (LEFT, CENTER (podrazumevano), RIGHT).
33
Python, Label
– padx unutrašnja leva i desna margina (podrazumevano 1).
– pady unutrašnja gornja i donja marginav (podrazumevano 1).
– relief dekorativni border (podrazumevano je FLAT).
– text prikaz jedne ili više linija teksta u labeli (korišćenjem "\n" forsira
se nova linija).
– textvariable postavljanje teksta kao kontrolne varijable klase
StringVar.
– underline postavljanje podvlačenja (_) ispod n-tog slova teksta
indeksiranog og nule (podrazumevano -1).
– width širina labele u karakterima (za fit-ovanje konteksta).
– wraplength ograničavanje broja karaktera po liniji (podrazumevano
0, nema preloma linije teksta osim ako je "\n").
from tkinter import *
root = Tk()
var = StringVar()
label = Label( root, textvariable=var, relief=RAISED )
var.set("Hey!? How are you doing?")
label.pack()
root.mainloop()
34
Python, Listbox
w = Listbox ( master, option, ... )
Parametri:
– master: roditeljski prozor.
– opcije: formatirane kao SCV parovi kay=value.
• Opcije su kao što sledi:
– bg normalna boja pozadine.
– bd veličina border-a (podrazumevano 2px).
– cursor tip kursora iznad listbox-a.
– font font listbox-a.
– fg boja teksta u listbox-u.
– height broj stavki u listbox-u (podrazumevano 10).
– relief 3D border senčenje (podrazumevano SUNKEN).
– selectbackground boja pozadine selektovanog teksta.
– selectmode određuje koliko je stavki moguće selektovati i kako ih
selektuje miš kao što sledi:
35
Python, Listbox
• SINGLE: selektovanje jedne stavke listbox-a i ne može se vršiti
prevlačenje mišem.
• BROWSE: selektovanje jedne stavke listbox-a (podrazumevano) ali
se selktovanje može raditi prevlačenje mišem.
• MULTIPLE: selektovanje više linija.
• EXTENDED: selekcija grupe susednih stavki klikom na prvu i
prevlačenjem do poslednje stavke.
– width širina u karakterima (podrazumevano 20).
– xscrollcommand za horizontalno skrolovanje listbox treba linkovati sa
horizontalnim skrolbarom.
– yscrollcommand za vertikalno skrolovanje listbox treba linkovati sa
vertikalnim skrolbarom.
Metode Listbox objekta:
• activate ( index ) selekcija indeksom specificirane stavke.
• curselection() vraća n-torku indeksa selektovanih stavki
(broji od nultog indeksa).
Ako nema selektovanih stavki vraća praznu n-torku.
36
Python, Listbox
• delete ( first, last=None ) briše stavke u navedenom opsegu indeksa (ako
je drugi argument izostavljen briše se samo
stavka specificirana prvim indeksom.
• get ( first, last=None ) vraća n-torku koja sadrži tekstove stavki
navedenog indeksnog opsega.
• index ( ii ) postavljanje stavke indeksa ii na vrh widget-a.
• insert ( index, *elements ) ubacivanje jedne ili više stavki u listbox pre
specificirane stavke čiji je indeks dat prvim
parametrom. Za dodavanje na kraj za prvi
argument se uzima vrednost END.
• nearest ( y ) vraća indeks vidljive stavke najbliže y-koordinati y.
• see ( index ) podešavanje da stavka datog indeksa bude vidljiva.
• size() vraća broj linija u listbox-u.
• xview() za postizanje horizontalne skrolabilnosti postavlja se
command opcija asociranog horizontalnog scrollbar-a
na ovaj metod.
37
Python, Listbox
• xview_scroll ( number, what ) horizontalno skrolovanje listbox-a. Argument
number odnosi se na koliko se skroluje, a
argument what određuje da li se skroluje u
karakterima (UNITS) ili u stranicama (PAGES)
tj. za širinu listbox-a.
• yview() za pravljenje vertikalne skrolabilnosti
postavlja se komandna opcija asociranog
vertikalnog scrollbar-a na ovaj metod.
• yview_scroll ( number, what ) vertikalno skrolovanje listbox-a. Argument
number odnosi se na koliko se skroluje, a
argument what određuje da li se skroluje u
karakterima (UNITS) ili u stranicama (PAGES)
tj. za visinu listbox-a.
38
Python, Listbox
from tkinter import *
import tkinter
top = Tk()
Lb1 = Listbox(top, selectmode=SINGLE )
Lb1.insert(0, "Python")
Lb1.insert(1, "Perl")
Lb1.insert(2, "C")
Lb1.insert(3, "PHP")
Lb1.insert(4, "JSP")
Lb1.insert(5, "Ruby")
Lb1.activate(1)
Lb1.select_set(1,1)
Lb1.pack()
#print(str(Lb1.get(ACTIVE)))
print(str(Lb1.get(12)))
top.mainloop()
39
Python, Message
w = Message ( master, option, ... )
Parametri:
• master: roditeljski prozor.
• options: date u CSV formi parova kay=value.
• Opcije su kao što sledi:
• anchor poravnanje teksta ako widget ima više prostora od prostora
teksta (podrazumevano anchor=CENTER).
• bg boja pozadine.
• bitmap prikaz slike.
• bd veličina bordera oko indikatora (podrazumevano 2px).
• cursor tip kursora kada je miš iznad komponente.
• font font teksta.
• fg boja teksta.
• height visina.
• image prikaz statične slike.
• justify poravnanje teksta (LEFT, CENTER, RIGHT).
40
Python, Message
• padx unutrašnja leva i desna margina (podrazumevano 1).
• pady unutrašnja gornja i donja margina (podrazumevano 1).
• relief dekorativni border oko labele (podrazumevano FLAT).
• text tekst poruke (string kod koga se uračunavaju znaci "\n").
• textvariable tekst poruke je u kontrolnoj varijabli klase StringVar.
• underline podvlačenje slova teksta indeksirano od 0 (podrazumevano -1).
• width širina labele u karakterima (ako nije postavljena veličina
odgovara sadržaju).
• wraplength prelom teksta na datom broju karaktera (podrazumevano 0).
automatski wrap-uje tekst
41
Python, messagebox
messagebox.FunctionName(title, message [, options])
Parametri:
• FunctionName: naziv pripadne funkcije koja se veže za message box.
• title: naslov messagebox-a.
• message: tekstualna poruka.
• options: opcije
Metode:
• showinfo()
• showwarning()
• showerror ()
• askquestion() (vraća yes no )
• askyesno () (vraća True False )
• askokcancel() (vraća True False )
• askretrycancel () (vraća True False )
42
Python, messagebox
import tkinter
from tkinter import messagebox
top = tkinter.Tk()
def hello():
messagebox.showinfo("Say Hello", "Hello World")
B1 = tkinter.Button(top, text = "Say Hello", command = hello)
B1.pack()
top.mainloop()
import tkinter
from tkinter import messagebox
top = tkinter.Tk()
def deleteme():
answer = messagebox.askquestion("Delete", "Are You Sure?",
icon='warning')
if answer=='yes':
print ("Deleted")
else:
print ("I'm Not Deleted Yet")
B1 = tkinter.Button(top, text = "Delete",
command = deleteme)
B1.pack()
top.mainloop()
43
Python, Menu
w = Menu ( master, option, ... )
Parametri:
– master: roditeljski prozor.
– options: opcije u CSV formi parova kay=value.
• Opcije su kao što sledi:
– activebackground boja pozadine kada je opcija ispod miša.
– activeborderwidth širina bordera oko opcije koja je ispod miša
(podrazumevano 1px).
– activeforeground boja pisanja opcije koja je ispod miša.
– bg boja pozadine.
– bd širina bordera oko pocija (podrazumevano 1).
– cursor tip kursora iznad opcije.
– disabledforeground boja pisanja onemogućene stavke.
– font podrazumevani font.
– fg boja pisanja.
– postcommand dodeljuje se naziv procedure koja se poziva kada se
izbacuje meni.
– relief podrazumevani 3D efekat je relief=RAISED.
– image prikaz slike.
– selectcolor boja selekcije.
44
Python, Menu
– tearoff normalno je tear-off element na 0-toj poziciji, tako da opcije
počinju od broja 1, inače, ako ga nema opcije počinju od 0
– title promena tear-off naslova na dati string.
Metode su kao što sledi:
– add_command (options) dodaje stavku menija u meni.
– add_radiobutton( options ) kreira radio button stavku menija.
– add_checkbutton( options ) kreira check button stavku menija.
– add_cascade(options) kreira novi hijerarhijski meni asocijacijom
datog menija roditeljskom meniju.
– add_separator() dodavanje separatorske linije meniju.
– add( type, options ) dodavanje specifičnog tipa stavke meniju.
– delete( startindex [, endindex ]) briše stavke menija u datom opsegu.
– entryconfig( index, options ) modifikacija stavke menija određene
datim indeksom i navedene opcije.
– index(item) vraća indeks date stavke.
– insert_separator ( index ) ubacuje separator na poziciji datom indeksom.
– invoke ( index ) poziv procedure associrane sa izborom datog indeksa
(checkbutton: alternira set i cleared, radiobutton: set).
– type ( index ) tip izbora specificiranog indeksom:
"cascade", "checkbutton", "command", "radiobutton",
"separator".
45
Python, Menu
from tkinter import *
def donothing():
tl= Toplevel(root)
button = Button(tl, text="Do nothing button")
button.pack()
root = Tk()
menubar = Menu(root)
filemenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="New", command=donothing)
filemenu.add_command(label="Open", command=donothing)
filemenu.add_command(label="Save", command=donothing)
filemenu.add_command(label="Save as...", command=donothing)
filemenu.add_command(label="Close", command=donothing)
filemenu.add_separator()
filemenu.add_command(label="Exit", command=root.quit)
editmenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Edit", menu=editmenu)
editmenu.add_command(label="Undo", command=donothing)
editmenu.add_separator()
editmenu.add_command(label="Cut", command=donothing)
editmenu.add_command(label="Copy", command=donothing) 46
Python, Menu
editmenu.add_command(label="Paste", command=donothing)
editmenu.add_command(label="Delete", command=donothing)
editmenu.add_command(label="Select All", command=donothing)
root.config(menu=menubar)
root.mainloop()
47
Python, Scale
w = Scale ( master, option, ... )
Parametri:
• master: roditeljski prozor.
• options: date u CSV formi parova key=value.
Slede primeri opcija:
• activebackground boja pozadine kada je miš iznad widget-a.
• bg boja pozadine.
• bd širina 3D bordera oko klizača (podrazumevano 2 px).
• command procedura koja se poziva pri pomeranju klizača (argument je
nova vrednost na skali).
• cursor tip kursora (arrow, dot, ...) iznad widget-a.
• digits dodeljivanje vrednosti kontrolnoj varijabli (IntVar, DoubleVar
(float) ili StringVar). Za string, digits govori u koliko cifara se
konvertuje vrednost na skali.
• font font koji se koristi.
• fg boja teksta.
• from_ vrednost početka opsega skale.
48
Python, Scale
• label labela (gore-levo za horizontalnu skalu, gore-desno za
vertikalnu skalu, podrazumevano nema labele).
• length veličina widget-a (ovo je: x dimenzija ako je skala
horizontalna, y dimenzija ako je skala vertikalna,
podrazumevano je 100 px).
• orient orijentacija skale, podrazumevano je
orient=HORIZONTAL (može biti orient=VERTICAL).
• relief dekorativni border oko labele (podrazumevano FLAT).
• repeatdelay kašnjenje ponavljanja pomeraja (podrazum. 300ms).
• resolution rezulucija skale (nps. skala je od -1.0 do 1.0, a rezolucija
0.5, vrednosti su: -1.0, -0.5, 0.0, 0.5 i 1.0).
• showvalue prikaz trenutne vrednosti (tekst je za horizontalnu
postavljen iznad a za vertikalnu skalu levo do skale).
Vrednost 0 znači da nema prikaza labele.
• sliderlength dužina klizača (podrazumevano 30 px).
49
Python, Scale
• state stanje widget-a (onemogućavanje: state=DISABLED).
• takefocus uzimanje fokusa preko tab-a. (takefocus=1, a za
sprečavanje takefocus=0).
• tickinterval prikaz podela na skali (podrazumevano 0). Ako je opseg 0-1, onda
su prikazi 0.0, 0.25, 0.50, 0.75 i 1.00 (za rezoluciju 0.25).
• to broj koji određuje kraj opsega skale.
• throughcolor boja trake.
• variable kontrolna varijabla skale (IntVar, DoubleVar ili StringVar).
Za string se vrši konverzija vrednosti.
• width širina trake (podrazumevano 15 px).
50
Python, Scale
Metode:
• get() vraća tekuću vrednost skale.
• set ( value ) postavlja vrednost skale.
51
Python, Scrollbar
• w = Scrollbar ( master, option, ... )
Parametri:
• master: roditeljski prozor.
• options: date u CSV formi parova key=value.
52
Python, Scrollbar
• jump opcija koja kontroliše šta se dešava kada korisnik pomera klizač.
Ako je jump=0 onda mali pomeraj klizača poziva callback
proceduru, a ako je jump=1 onda će se callback procedura pozvati
kada korisnik otpusti dugme miša.
• orient orijentacija (orient=HORIZONTAL za horizontalni scrollbar,
odnosno orient=VERTICAL za vertikalni scrollbar).
• repeatdelay odlaganje ponavljanja pomeraja kada je pritisnut taster 1
(podrazumevano 300ms).
• repeatinterval interval ponavljanja
• takefocus uzimanje fokusa preko tab-a (takefocus=1, a za
sprečavanje takefocus=0).
• throughcolor boja trake.
• width širina scrollbar-a (za horizontalni to je y dimenzija, a za
vertikalni to je x dimenzija, podrazumevano 16).
53
Python, Scrollbar
Metode:
• get() vraća poziciju klizača (a,b) normalizovano 0..1.
• set ( a, b ) postavlja poziciju klizača (a,b).
– Za konekciju nekog widget-a sa Scrollbar-om čiji je identifikator npr.
scrollbar potrebno je parametru xscrollcommand ili yscrollcommand tog
widget-a dodeliti vrednost scrollbar.set
54
Python, LabelFrame
w = LabelFrame( master, option, ... )
Parametri:
• master: roditeljski prozor.
• options: date u CSV formi parova key=value.
55
Python, LabelFrame
from tkinter import *
root = Tk()
labelframe = LabelFrame(root, text="This is a LabelFrame")
labelframe.pack(fill="both", expand="yes")
left = Label(labelframe, text="Inside the LabelFrame")
left.pack()
root.mainloop()
56
Python, Spinbox
w = Spinbox( master, option, ... )
Parametri:
• master: roditeljski prozor.
• options: date u CSV formi parova kay=value.
Slede primeri opcija:
• activebackground aktivna boja pozadine (miš je iznad klizača ili strelica).
• bg boja pozadine.
• bd širina 3D bordera (podrazumevano 2px oko klizača i
strelica)
• command procedura koja se poziva pri pomeranju spina.
• cursor tip kursora kada je iznad spinbox-a.
• disabledbackground boja pozadine onemogućenog spinbox-a.
• disabledforeground boja pisanja onemogućenog spinbox-a.
• fg boja teksta.
• font font koji se koristi.
• format format stringa.
57
Python, Spinbox
• from_ minimalna vrednost spina.
• justify podrazumevano LEFT.
• relief podrazumevano SUNKEN.
• repeatdelay odlaganje ponavljanja u ms.
• repeatinterval inerval ponavljanja u ms.
• state stanje: NORMAL, DISABLED ili "readonly".
• textvariable nema podrazumevanu vrednost.
• to maksimalna vrednost spina.
• validate validacioni mod (podrazumevano NONE).
• validatecommand validaciona callback procedura.
• vcmd kao i validatecommand.
• values n-torka validnih vrednosti spinbox-a (values()).
• width širina widget-a u karakterima (podrazumevano 20).
• wrap ako je true onda prikazuje vrednosti kružno.
• xscrollcommand veza sa horizontalnim scrollbar-om (ova opcija se
postavlja metodom set odgovarajućeg scrollbar-a).
58
Python, Spinbox
Metode
• delete(startindex [,endindex])
– briše opseg karaktera ili karakter.
• get(startindex [,endindex])
– vraća specifičan karakter ili opseg teksta.
• identify(x, y)
– identifikuje widget element na datoj lokaciji.
• index(index)
– vraća apsolutnu vrednost indeksa baziranog na datom indeksu.
• insert(index [,string]...)
– umetanje stringa od datog indeksa.
• invoke(element)
– poziv spinbox dugmeta (“buttonup” or “buttondown”).
59
Python, Spinbox
from tkinter import *
master = Tk()
def komanda():
print ("trenutno je spinbox na: ",var.get())
var=StringVar()
w = Spinbox(master, from_=0, to=10, command=komanda, textvariable=var)
w.pack()
mainloop()
60
Python, Text
w = Text ( master, option, ... )
Parametri:
• master: roditeljski prozor.
• options: date u CSV formi parova kay=value.
61
Python, Text
• insertbackground boja kursora u insert modu (podrazumevano black).
• insertborderwidth veličina 3D bordera kusora u insert modu (podraz. 0).
• insertofftime blinkanje isključenog kursora u insert modu
(podrazumevano je isključen 300ms)
• insertontime blinkanje uključenog kursora u insert modu
(podrazumevano je uključen 600ms)
• insertwidth širina kursora u insert modu.
• padx unustrašnja leva i desna margina (podraz. 1px).
• pady unutrašnja gornja i donja margina (podraz. 1px).
• relief 3D prikaz widget-a (podrazumevano relief=SUNKEN).
• selectbackground boja pozadine selektovanog teksta.
• selectborderwidth širina bordera oko selektovanog teksta.
• spacing1 razmak iznad teksta (iznad prve linije, podrazum. 0).
• spacing2 dodatni razmak između linija teksta (podraz. 0).
• spacing3 razmak ispod teksta (podrazumevano 0).
62
Python, Text
• state stanje widget-a (NORMAL, DISABLED).
• tabs kontrola tab karaktera.
• width širina widget-a u karakterima mereno prema tekućem fontu.
• wrap prelom teksta na nivou reči ili karaktera (wrap=WORD vrši
prelom do na reč, wrap=CHAR vrši prelom do na karakter).
• xscrollcommand postavljanje horizontalne skrolabilnosti widget-a.
63
Python, Text
Metode:
• delete(startindex [,endindex]) briše dati opseg teksta.
• get(startindex [,endindex]) vraća tekst specificiranog opsega.
• insert(index [,string]...) umetanje stringa od datog indeksa.
• see(index) vraća da li je tekst datog indeksa vidljiv.
64
Python, Text
Metode za markere:
• index(mark) vraća liniju i kolonu datog markera.
• mark_gravity(mark [,gravity]) vraća gravitaciju datog markera (opcioni drugi
parametar postavlja gravitaciju).
• mark_names() vraća sve markere text widget-a.
• mark_set(mark, index) postavlja marker na dati indeks.
• mark_unset(mark) uklanja dati marker.
Metode za tagove:
• tag_add(tagname, startindex[,endindex] ...)
– taguje poziciju startindeks-a ili opsega startindex-endindex.
• tag_config
– konfigurisanje: justify(center, left, or right), tabs(kao svojstvo tabs) i
underline(podvlačenje tagovanog teksta).
• tag_delete(tagname) : briše dati tag.
• tag_remove(tagname [,startindex[.endindex]] ...)
– uklanjanje tag-a sa datog opsega ili pozicije bez brisanja definicije tag-a.
65
Python, Text
from tkinter import *
root = Tk()
text = Text(root)
text.insert(INSERT, "Hello.....")
text.insert(END, "Bye Bye.....")
text.pack()
66