{"id":86,"date":"2010-11-04T11:14:51","date_gmt":"2010-11-04T08:14:51","guid":{"rendered":"http:\/\/python.pingviinitiivul.ee\/?p=86"},"modified":"2010-11-04T17:52:23","modified_gmt":"2010-11-04T14:52:23","slug":"seitsmes-tund","status":"publish","type":"post","link":"https:\/\/python.pingviinitiivul.ee\/?p=86","title":{"rendered":"Seitsmes tund"},"content":{"rendered":"<p>Alustuseks \u00fcks s\u00f5rmk\u00fcbarat\u00e4is objektorienteerimist:<br \/>\n<code>#!\/usr\/bin\/python<br \/>\n# -*- coding: utf-8 -*-<br \/>\n#defineeritakse isik<br \/>\nclass isik:<br \/>\n&nbsp;&nbsp;&nbsp;def ytleTere(self):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 'Tere, kuidas k\u00e4si k\u00e4ib?'<br \/>\n# siit l\u00f5ppes objekti definitsioon \u00e4ra ja programm alustab oma tavalisel moel<br \/>\np = isik()<br \/>\np.ytleTere()<br \/>\n# t\u00f6\u00f6tab ka: Person().ytleTere()<\/code><\/p>\n<p>Me oleme varem kasutanud juba objektorienteerimisest tulenevat keelt: n\u00e4iteks kuuluvad objektorienteerimise alla teksti \u00fcmberkodeerimine (tekst.encode(&#8216;utf-8&#8217;)), faili kirjutamine fail.append moel jne.<\/p>\n<p>Edasi esimene graafiline programm, mis midagi joonistada suudab:<\/p>\n<p><code>#!\/usr\/bin\/python<br \/>\n# -*- coding: utf-8 -*-<br \/>\nfrom Tkinter import *  # siin haaratakse kaasa graafika Tkinter paketist<br \/>\n# Tk peafunktsioon<br \/>\njuur = Tk()<br \/>\n# loetakse lisaseaded failist, peabki olema v\u00e4ljakommenteeritud<br \/>\n#juur.option_readfile('optionDB')<br \/>\n# antakse nimi p\u00f5hiobjektile juur<br \/>\njuur.title('L\u00f5uend')<br \/>\n# luuakse l\u00f5uend - Canvas, m\u00e4\u00e4ratakse k\u00f5rgus ja laius<br \/>\nlouend = Canvas(juur, width =400, height=400)<br \/>\n# m\u00e4\u00e4rame joonistusala xy<br \/>\nxy = 10, 105, 100, 200<br \/>\n# loome l\u00f5uendisse kaare vastavate parameetritega<br \/>\nlouend.create_arc(xy, start=0, extent=220, fill='gray90')<br \/>\nlouend.pack()<br \/>\n# laseme k\u00e4ima peamise ts\u00fckli, mis lihtsalt on<br \/>\njuur.mainloop()<br \/>\n<\/code><\/p>\n<p>V\u00e4rve on hea lisada RGB HEXis ehk kuusteistk\u00fcmmends\u00fcsteemis, n\u00e4iteks #115588<br \/>\n# j\u00e4rel esimesed kaks kohta kuuluvad punasele &#8211; 00 on k\u00f5ige &#8220;v\u00e4hem punane&#8221; ja FF k\u00f5ige &#8220;rohkem punane&#8221;,<br \/>\n9 j\u00e4rgnevad A, B, C, D, E ja F.<br \/>\n3-4 koht kuuluvad rohelisele ja 5-6 koht sinisele.<br \/>\nV\u00f5ib vaadata n\u00e4iteks <a href=\"http:\/\/htmlhelp.com\/cgi-bin\/color.cgi\">tabelist<\/a>.<\/p>\n<p>V\u00f5ib lisada erinevaid muid joonistusobjekte:<\/p>\n<p><code>louend.create_line(105,10,200,105)<br \/>\nfor i in range(1, 30, 3):<br \/>\n&nbsp;&nbsp;&nbsp;    louend.create_line(0, i, 60, i)<br \/>\nlouend.create_line(0, 300, 156, 150, width=10, fill='red')<br \/>\nlouend.create_oval(200, 200, 400, 400, width=2, fill='blue')<br \/>\nlouend.create_polygon(205,105,285,125,166,177,210,199,205,105, fill='white')<br \/>\nlouend.create_rectangle(20, 20, 300, 300, width=5, fill='red')<\/code><\/p>\n<p><code>img = PhotoImage(file='.\/logo.gif')<br \/>\nlouend.create_image(145,280, image=img, anchor=CENTER)<br \/>\n<\/code><br \/>\nEdasi elemendid, mida saaks kasutada, et programmi hiirega toimetama panna:<\/p>\n<p><code>#!\/usr\/bin\/python<br \/>\n# -*- coding: utf-8 -*-<br \/>\nfrom Tkinter import *<br \/>\n#nupu loomine<br \/>\naken = Button(text='Spam', padx=10, pady=10)<br \/>\n#suurus<br \/>\naken.pack(padx=20, pady=20)<br \/>\n#hiirekursori seadmine<br \/>\naken.config(cursor='gumby')<br \/>\n#kirjastiili seadmine<br \/>\naken.config(font=('helvetica', 20, 'underline italic'))<br \/>\nmainloop()<\/code><\/p>\n<p>Viimaks \u00fcks n\u00e4ide graafilisest nimekirjast:<\/p>\n<p><code>#!\/usr\/bin\/python<br \/>\n# -*- coding: utf-8 -*-<br \/>\nfrom Tkinter import *<br \/>\n&nbsp;&nbsp;&nbsp;    #<br \/>\njuur = Tk()<br \/>\njuur.title('nimekiribox')<br \/>\nnimekiri = Listbox(juur, width=15)<br \/>\nnimekiri.pack()<br \/>\n&nbsp;&nbsp;&nbsp;    #10 korda lisame numbri<br \/>\nfor item in range(10):<br \/>\n&nbsp;&nbsp;&nbsp;    nimekiri.insert(END, item)<br \/>\n&nbsp;&nbsp;&nbsp;    #<br \/>\njuur.mainloop()<\/code><\/p>\n<p>Viimaks \u00fcks p\u00f5hjalikum dialoogidega aken:<br \/>\n<code><br \/>\nfrom Tkinter import *<br \/>\nfrom tkMessageBox import askyesno, showerror<br \/>\nclass NewDialogDemo(Frame):<br \/>\n&nbsp;&nbsp;&nbsp;     def __init__(self, master=None):<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         Frame.__init__(self, master)<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         Pack.config(self)<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         self.createWidgets()<br \/>\n&nbsp;&nbsp;&nbsp;     def greet(self):<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         print \"hi\"<br \/>\n &nbsp;&nbsp;&nbsp;    def greet2(self):<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         print \"neljas!\"<br \/>\n&nbsp;&nbsp;&nbsp;     def createWidgets(self):<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         Label(self,  text='Nimi').pack(side=TOP)<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         Button(self, text='Nupp 1', command=self.dialog1).pack()<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         Button(self, text='Nupp 2', command=self.dialog2).pack()<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         Button(self, text='Nupp 3',  command=self.greet  ).pack(side=LEFT)<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         Button(self, text='Nupp 4',  command=self.greet2  ).pack(side=RIGHT)<br \/>\n&nbsp;&nbsp;&nbsp;     def dialog1(self):<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         ans = askyesno('Tiitel!', 'Tekst')<br \/>\n&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;         if ans: self.dialog2()<br \/>\n&nbsp;&nbsp;&nbsp;     def dialog2(self):<br \/>\n &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;        showerror('Vea tiitel', \"Tekst\")<br \/>\nif __name__ == '__main__': NewDialogDemo().mainloop()<\/code><\/p>\n<p>Kontrollruudukesed:<br \/>\n<code>#!\/usr\/bin\/python<br \/>\n# -*- coding: utf-8 -*-<br \/>\n#<br \/>\nfrom Tkinter import *<br \/>\n#<br \/>\nclass Checkbar(Frame):<br \/>\n&nbsp;&nbsp;&nbsp;    def __init__(self, parent=None, picks=[], side=LEFT, anchor=W):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        Frame.__init__(self, parent)<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       self.vars = []<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        for pick in picks:<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;            var = IntVar()<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           chk = Checkbutton(self, text=pick, variable=var)<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           chk.pack(side=side, anchor=anchor, expand=YES)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;            self.vars.append(var)<br \/>\n&nbsp;&nbsp;&nbsp;    def state(self):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        return map((lambda var: var.get()), self.vars)<br \/>\n#<br \/>\n#<br \/>\nclass Quitter(Frame):<br \/>\n&nbsp;&nbsp;&nbsp;    def __init__(self, parent=None):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        Frame.__init__(self, parent)<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       self.pack()<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        widget = Button(self, text='Quit', command=self.quit)<br \/>\n  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      widget.pack(expand=YES, fill=BOTH, side=LEFT)<br \/>\n&nbsp;&nbsp;&nbsp;    def quit(self):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        quit(self)<br \/>\n#<br \/>\n#<br \/>\nif __name__ == '__main__':<br \/>\n&nbsp;&nbsp;&nbsp;    root = Tk()<br \/>\n&nbsp;&nbsp;&nbsp;    lng = Checkbar(root, ['Python', 'C#', 'Java', 'C++'])<br \/>\n&nbsp;&nbsp;&nbsp;    tgl = Checkbar(root, ['All'])<br \/>\n&nbsp;&nbsp;&nbsp;    lng.pack(side=TOP,  fill=X)<br \/>\n&nbsp;&nbsp;&nbsp;    tgl.pack(side=LEFT)<br \/>\n&nbsp;&nbsp;&nbsp;    lng.config(relief=GROOVE, bd=2)<br \/>\n##<br \/>\n&nbsp;&nbsp;&nbsp;    def allstates(): print lng.state(), tgl.state()<br \/>\n&nbsp;&nbsp;&nbsp;    Quitter(root).pack(side=RIGHT)<br \/>\n&nbsp;&nbsp;&nbsp;    Button(root, text='Peek', command=allstates).pack(side=RIGHT)<br \/>\n&nbsp;&nbsp;&nbsp;    root.mainloop()<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Alustuseks \u00fcks s\u00f5rmk\u00fcbarat\u00e4is objektorienteerimist: #!\/usr\/bin\/python # -*- coding: utf-8 -*- #defineeritakse isik class isik: &nbsp;&nbsp;&nbsp;def ytleTere(self): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print &#8216;Tere, kuidas k\u00e4si k\u00e4ib?&#8217; # siit l\u00f5ppes objekti definitsioon \u00e4ra ja programm alustab oma tavalisel moel p = isik() p.ytleTere() # t\u00f6\u00f6tab ka: &hellip; <a href=\"https:\/\/python.pingviinitiivul.ee\/?p=86\">J\u00e4tka lugemist <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-86","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts\/86","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=86"}],"version-history":[{"count":25,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts\/86\/revisions"}],"predecessor-version":[{"id":111,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts\/86\/revisions\/111"}],"wp:attachment":[{"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=86"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=86"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=86"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}