Seitsmes tund

Alustuseks üks sõrmkübaratäis objektorienteerimist:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#defineeritakse isik
class isik:
   def ytleTere(self):
      print 'Tere, kuidas käsi käib?'
# siit lõppes objekti definitsioon ära ja programm alustab oma tavalisel moel
p = isik()
p.ytleTere()
# töötab ka: Person().ytleTere()

Me oleme varem kasutanud juba objektorienteerimisest tulenevat keelt: näiteks kuuluvad objektorienteerimise alla teksti ümberkodeerimine (tekst.encode(‘utf-8’)), faili kirjutamine fail.append moel jne.

Edasi esimene graafiline programm, mis midagi joonistada suudab:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from Tkinter import * # siin haaratakse kaasa graafika Tkinter paketist
# Tk peafunktsioon
juur = Tk()
# loetakse lisaseaded failist, peabki olema väljakommenteeritud
#juur.option_readfile('optionDB')
# antakse nimi põhiobjektile juur
juur.title('Lõuend')
# luuakse lõuend - Canvas, määratakse kõrgus ja laius
louend = Canvas(juur, width =400, height=400)
# määrame joonistusala xy
xy = 10, 105, 100, 200
# loome lõuendisse kaare vastavate parameetritega
louend.create_arc(xy, start=0, extent=220, fill='gray90')
louend.pack()
# laseme käima peamise tsükli, mis lihtsalt on
juur.mainloop()

Värve on hea lisada RGB HEXis ehk kuusteistkümmendsüsteemis, näiteks #115588
# järel esimesed kaks kohta kuuluvad punasele – 00 on kõige “vähem punane” ja FF kõige “rohkem punane”,
9 järgnevad A, B, C, D, E ja F.
3-4 koht kuuluvad rohelisele ja 5-6 koht sinisele.
Võib vaadata näiteks tabelist.

Võib lisada erinevaid muid joonistusobjekte:

louend.create_line(105,10,200,105)
for i in range(1, 30, 3):
    louend.create_line(0, i, 60, i)
louend.create_line(0, 300, 156, 150, width=10, fill='red')
louend.create_oval(200, 200, 400, 400, width=2, fill='blue')
louend.create_polygon(205,105,285,125,166,177,210,199,205,105, fill='white')
louend.create_rectangle(20, 20, 300, 300, width=5, fill='red')

img = PhotoImage(file='./logo.gif')
louend.create_image(145,280, image=img, anchor=CENTER)

Edasi elemendid, mida saaks kasutada, et programmi hiirega toimetama panna:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from Tkinter import *
#nupu loomine
aken = Button(text='Spam', padx=10, pady=10)
#suurus
aken.pack(padx=20, pady=20)
#hiirekursori seadmine
aken.config(cursor='gumby')
#kirjastiili seadmine
aken.config(font=('helvetica', 20, 'underline italic'))
mainloop()

Viimaks üks näide graafilisest nimekirjast:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from Tkinter import *
    #
juur = Tk()
juur.title('nimekiribox')
nimekiri = Listbox(juur, width=15)
nimekiri.pack()
    #10 korda lisame numbri
for item in range(10):
    nimekiri.insert(END, item)
    #
juur.mainloop()

Viimaks üks põhjalikum dialoogidega aken:

from Tkinter import *
from tkMessageBox import askyesno, showerror
class NewDialogDemo(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        Pack.config(self)
        self.createWidgets()
    def greet(self):
        print "hi"
    def greet2(self):
        print "neljas!"
    def createWidgets(self):
        Label(self, text='Nimi').pack(side=TOP)
        Button(self, text='Nupp 1', command=self.dialog1).pack()
        Button(self, text='Nupp 2', command=self.dialog2).pack()
        Button(self, text='Nupp 3', command=self.greet ).pack(side=LEFT)
        Button(self, text='Nupp 4', command=self.greet2 ).pack(side=RIGHT)
    def dialog1(self):
        ans = askyesno('Tiitel!', 'Tekst')
        if ans: self.dialog2()
    def dialog2(self):
        showerror('Vea tiitel', "Tekst")
if __name__ == '__main__': NewDialogDemo().mainloop()

Kontrollruudukesed:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
from Tkinter import *
#
class Checkbar(Frame):
    def __init__(self, parent=None, picks=[], side=LEFT, anchor=W):
       Frame.__init__(self, parent)
       self.vars = []
       for pick in picks:
          var = IntVar()
          chk = Checkbutton(self, text=pick, variable=var)
          chk.pack(side=side, anchor=anchor, expand=YES)
          self.vars.append(var)
    def state(self):
       return map((lambda var: var.get()), self.vars)
#
#
class Quitter(Frame):
    def __init__(self, parent=None):
       Frame.__init__(self, parent)
       self.pack()
       widget = Button(self, text='Quit', command=self.quit)
       widget.pack(expand=YES, fill=BOTH, side=LEFT)
    def quit(self):
       quit(self)
#
#
if __name__ == '__main__':
    root = Tk()
    lng = Checkbar(root, ['Python', 'C#', 'Java', 'C++'])
    tgl = Checkbar(root, ['All'])
    lng.pack(side=TOP, fill=X)
    tgl.pack(side=LEFT)
    lng.config(relief=GROOVE, bd=2)
##
    def allstates(): print lng.state(), tgl.state()
    Quitter(root).pack(side=RIGHT)
    Button(root, text='Peek', command=allstates).pack(side=RIGHT)
    root.mainloop()

Rubriigid: Uncategorized. Salvesta püsiviide oma järjehoidjasse.

Lisa kommentaar