Grafika - Nauk.si

Download Report

Transcript Grafika - Nauk.si

Python
Grafika
1
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
2
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 – tk interface
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
3
Osnovni zgled
import tkinter
okno = tkinter.Tk()
okno.mainloop()
4
RISANJE
5
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:
import tkinter
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!
6
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
…
7
"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
8
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()
9
Nekaj povezav
http://www.student.nada.kth.se/~d94tan/notes/tkcanvas/tkcanvas.htm
http://effbot.org/tkinterbook/tkinterindex.htm#class-reference
http://www.s3gim.mb.edus.si/informatika/4_letnik/vaje/P
ython_Tkinter.pdf
10
In …
11