110 likes | 256 Views
Python. Grafika. Grafične knjižnice. Programski jeziki običajno ne vsebujejo ukazov za delo z grafiko So pa izjeme: LOGO … Različne knjižnice za delo z grafiko in za gradnjo GUV (GUI) Grafični uporabniški vmesnik
E N D
Python Grafika
Grafične knjižnice • Programski jeziki običajno ne vsebujejo ukazov za delo z grafiko • So pa izjeme: LOGO … • Različne knjižnice za delo z grafiko in za gradnjo GUV (GUI) • Grafični uporabniški vmesnik • Ne le osnovni grafični ukazi (točka, premica, …) ampak tudi delo z okni, gumbi, dogodkovno programiranje … • Številne GUI knjižnice za Python • http://wiki.python.org/moin/GuiProgramming
tkinter • Na voljo so različne grafične knjižnice • Osnovna distribucija Pythona vsebuje standardni modul tkinter, ki omogoča delo z enostavno grafiko • tkinter – tkinterface • Pythonov dostop do GUI knjižnice Tk (uporablja se tudi drugje – v drugih pr. jezikih) • V 2.6 se je modul imenoval Tkinter (velika začetnica)! • Pogosto edina potrebna sprememba za prenos starih programov v Python 3.0 • Zamenjava Tkinter / tkinter
Osnovni zgled • import tkinter • okno = tkinter.Tk() • okno.mainloop()
Platno za risanje • platno = tkinter.Canvas(okno, width=300, height=300) • Ustvarimo platno določenih dimenzij, ki je del okna okno. • … rišemo po platnu • platno.pack() • Z metodo pack se odloči, kam se mora postaviti platno in da je platno vidno, ko se pokaže okno • Program: importtkinter okno = tkinter.Tk() platno = tkinter.Canvas(okno, width=200, height=200) platno.pack() • In … • Nič … (tudi praznega platna ni!) • Platno imamo, a nismo še naročili, naj se prikaže okno!
Ne pozabi! • Šele z okno.mainloop() zaženemo prikaz okna • Takrat se prikaže okno z vsemi "spakiranimi" elementi • Mi bomo do nadaljnjega imeli le en element (platno) • V bistvu neskončna zanka, ki "čaka" na dogodke • Dogodkovno programiranje (klik z miško, …) • IDLE in tkinter se ne razumeta najbolje • Ker je IDLE napisan v tkinter • Zato bo včasih potrebno ročno "pobijati" lupino, okna …
"Slikajmo" • platno.create_arc(x0, y0, x1, y1, opcije...) ... nariše krožni lok/odsek/izsek • platno.create_line(x0, y0, x1, y1, ..., opcije...) ... nariše lomljeno črto • platno.create_rectangle(x0, y0, x1, y1, opcije...) ... nariše pravokotnik • platno.create_oval(x0, y0, x1, y1, opcije...) ... nariše elipso • platno.create_polygon(x0, y0, x1, y1, ..., opcije...) ... nariše poligon • platno.create_text(x0, y0, opcije...) ... nariše besedilo
Denimo import tkinter okno = tkinter.Tk() platno = tkinter.Canvas(okno, width=400, height=300) platno.pack() platno.create_rectangle(10, 50, 150, 170) platno.create_oval(10, 50, 150, 170) platno.create_line(10, 50, 150, 170, 250, 100, fill='blue', width=4) platno.create_arc(100, 100, 300, 200,style='chord') platno.create_text(200, 150, text='besedilo', anchor='nw',fill='red', font=('Arial', 16, 'bold italic')) window.mainloop()
Nekaj povezav • http://www.student.nada.kth.se/~d94-tan/notes/tkcanvas/tkcanvas.htm • http://effbot.org/tkinterbook/tkinter-index.htm#class-reference • http://www.s-3gim.mb.edus.si/informatika/4_letnik/vaje/Python_Tkinter.pdf