Tvorba programov tipa GUI poteka v dveh korakih. Najprej naredimo
grafični uporabniški vmesnik (Graphical User Interface,
krajše GUI) z
uporabo najbolj primernih widgetov. Nato povemo programu (v primeru
Pythona je to Tk), da naj vstopi v dogodkovno zanko, ki čaka nastope
dogodkov, te pa nato primerno obdela oziroma izvede ustrezno akcijo.
Dogodki nastopajo, ko uporabnik kaj naredi, na primer klikne na gumb
miške ali tipko tipkovnice. Da bi lahko prišlo do odziva
na dogodek,
moramo povezati akcijo z dogodkom.
widget.bind(dogodek, funkcija)
|
Tu je primer, ko "lovimo" klike na okno:
# File: bind1.py |
![]() |
Poženi program in ga preskusi..
Pojavi se okno. Kadarkoli klikneš z levim mišjim gumbom
na okno, se v
konzolnem oknu izpiše nekaj takega: Kliknil si na 45 65 Program se nahaja v "bind1.pyw" |
Možnost | Opis |
---|---|
<Button-1> |
Na widget smo kliknili z mišjim gumbom. . "Button-1" je levi mišji gumb, "Button -2" je srednji gumb, "Button -3" je desni mišji gumb. Ko kliknemo z mišjim gumbom znotraj widgeta, Tk avtomatsko "zajame" kurzor miške in pošlje odzivni funkciji widgeta mišji dogodek. V članih x in y dogodkovnega objekta imamo na voljo trenutno pozicijo kurzorja miške. Namesto Button lahko uporabljamo ButtonPress, lahko pa to besedico povsem opustimo: <Button-1>, <ButtonPress-1> in <1> so sinonimi. Morda je zaradi jasnosti sintaksa <Button-1> najbolj primerna. |
<B1-Motion> |
Premaknili smo miš in pri tem držali gumb 1 (za srednji gumb uporabimo B2, za desni pa B3). V članih x in y dogodkovnega objekta imamo na voljo trenutno pozicijo kurzorja miške. |
<ButtonRelease-1> |
Sprostili smo levi gumb (Button 1). V članih x in y dogodkovnega objekta imamo na voljo trenutno pozicijo kurzorja miške. . |
<Double-Button-1> |
Dvokliknili smo na gumb 1. Uporabimo lahko predponi Double ali Triple. Če povežemo (bind) tako enojni klik (<Button-1>) kot dvoklik, bosta klicani obe povezavi. |
<Enter> |
Kurzor miške je vstopil v widget (ta dogodek ne pomeni, da smo kliknili na tipko Enter!). |
<Leave> |
Kurzor miške je zapustil widget. |
<Return> |
Na tipkovnici smo kliknili na tipko Enter. Povežemo lahko praktično vse tipke tipkovnice. Pri klasični tipkovnici s 102 tipkama imamo posebne tipke Cancel (tipka Break), BackSpace, Tab, Return (oziroma Enter), Shift_L (katerakoli tipka s tipko Shift), Control_L (katerakoli tipka skupaj s tipko Control), Alt_L (katerakoli tipka s tipko Alt), Pause, Caps_Lock, Escape, Prior (Page Up), Next (Page Down), End, Home, Left, Up, Right, Down, Print, Insert, Delete, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, Num_Lock in Scroll_Lock. |
<Key> |
Kliknili smo na katerokoli tipko tipkovnice. Pomen tipke dobimo v članu char dogodkovnega objekta, posredovanega odzivni funkciji ( v primeru posebnih tipk je to prazen niz). |
a |
Vtipkali smo "a". Tako lahko uporabljamo večino izpisnih znakov. Izjeme so presledek (<space*>) ter less than (<less*>). Opozorilo: 1 je povezava tipke, <1> pa je povezava mišjega gumba. |
<Shift-Up> |
Kliknili smo na puščico navzgor (Up), medtem ko smo držali tipko Shift. Uporabljamo lahko predpone Alt, Shift in Control. |
<Configure> |
widget je spremenil svojo velikost size (ali, na nekaterih platformah lokacijo). Odzivna funkcija dobi novo velikost v atributih width in height dogodkovnega objekta. |