{"id":148,"date":"2010-12-02T13:08:40","date_gmt":"2010-12-02T10:08:40","guid":{"rendered":"http:\/\/python.pingviinitiivul.ee\/?p=148"},"modified":"2010-12-02T17:35:36","modified_gmt":"2010-12-02T14:35:36","slug":"uksteist","status":"publish","type":"post","link":"https:\/\/python.pingviinitiivul.ee\/?p=148","title":{"rendered":"\u00dcksteist"},"content":{"rendered":"<p>T\u00e4na vaatame veel edasi v\u00f5imalusi luua graafilisi ehk akendes t\u00f6\u00f6tavaid programme. Seekord v\u00f5tame selleks veidi teise akenderaamistiku nimega wx.<\/p>\n<p><code>#!\/usr\/bin\/python<br \/>\n# -*- coding: utf-8 -*-<br \/>\nimport wx<br \/>\n#esmalt teeme raami ehk akna<br \/>\nclass MinuRaam(wx.Frame):<br \/>\n&nbsp;&nbsp;&nbsp;    def __init__(self):<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       wx.Frame.__init__(self, None, -1, \"Minu raam\", size=(300, 300))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        paneel = wx.Panel(self, -1) # raami (frame) lisatav paneel<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  # kui hiir on paneelil, siis pannakse toimetama meetod Liigub (all pool)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        paneel.Bind(wx.EVT_MOTION, self.Liigub)<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # lisatakse seisev tekst \"Hiire koht:\"<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       wx.StaticText(paneel, -1, \"Hiire koht:\", pos=(10, 12))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        self.kohaNaitaja = wx.TextCtrl(paneel, -1, \"\", pos=(90, 10)) # lisatakse tekstikast, milles saab teksti vahetada<br \/>\n &nbsp;&nbsp;&nbsp;   def Liigub(self, event):  #meetod Liigub<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        pos = event.GetPosition() # k\u00fcsitakse hiire koordinaadid<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        self.kohaNaitaja.SetValue(\"%s, %s\" % (pos.x, pos.y)) # seatakse tekstikastis koordinaadid \u00f5igeks<br \/>\nif __name__ == '__main__':<br \/>\n&nbsp;&nbsp;&nbsp;    rakendus = wx.PySimpleApp()<br \/>\n&nbsp;&nbsp;&nbsp;    raam = MinuRaam()<br \/>\n&nbsp;&nbsp;&nbsp;    raam.Show(True)<br \/>\n&nbsp;&nbsp;&nbsp;    rakendus.MainLoop()<br \/>\n<\/code><\/p>\n<p>Pildi n\u00e4itamine:<\/p>\n<p><code>#!\/usr\/bin\/python<br \/>\n# -*- coding: utf-8 -*-<br \/>\n\"\"\"Tere wxPython!\"\"\"  # dokument-kommentaar programmi juurde<br \/>\nimport wx<br \/>\nclass Raam(wx.Frame):   # Raam on wx.Frame alamklass ehk j\u00e4rglasobjekt<br \/>\n&nbsp;&nbsp;&nbsp;    \"\"\"Raam, mis kuvab pilti.\"\"\"<br \/>\n&nbsp;&nbsp;&nbsp;    def __init__(self, pilt, vanem=None, id=-1,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                koht=wx.DefaultPosition,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                tiitel='Tere, wxPython!'):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        \"\"\"Loob raami ja kuvab pildi.\"\"\"<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       temp = pilt.ConvertToBitmap()<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        suurus= temp.GetWidth(), temp.GetHeight()<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       wx.Frame.__init__(self, vanem, id, tiitel, koht, suurus)<br \/>\n  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      self.bmp = wx.StaticBitmap(parent=self, bitmap=temp)<br \/>\nclass Rakend(wx.App):<br \/>\n&nbsp;&nbsp;&nbsp;    \"\"\"Rakendus klass\"\"\"<br \/>\n&nbsp;&nbsp;&nbsp;    def OnInit(self):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        pilt = wx.Image('logo2.jpg', wx.BITMAP_TYPE_JPEG)<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       self.frame = Raam(pilt)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        self.frame.Show()<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        self.SetTopWindow(self.frame)<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       return True<br \/>\ndef peamine():<br \/>\n&nbsp;&nbsp;&nbsp;    rakendus= Rakend()<br \/>\n&nbsp;&nbsp;&nbsp;    rakendus.MainLoop()<br \/>\n#programmi p\u00f5himeetod<br \/>\nif __name__ == '__main__':<br \/>\n&nbsp;&nbsp;&nbsp;    peamine()<br \/>\n<\/code><\/p>\n<p>Joone t\u00f5mbamine 1 sekund p\u00e4rast akna loomist:<br \/>\n<code>#!\/usr\/bin\/python<br \/>\n# -*- coding: utf-8 -*-<br \/>\nimport wx<br \/>\nclass naide(wx.Frame):<br \/>\n&nbsp;&nbsp;&nbsp;    def __init__(self, parent, title):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        super(naide, self).__init__(parent, title=title,<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;            size=(350, 170))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        wx.FutureCall(1000, self.joonistajoon)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        self.Centre()<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        self.Show()<br \/>\n&nbsp;&nbsp;&nbsp;    def joonistajoon(self):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc = wx.ClientDC(self)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.DrawLine(50, 30, 290, 150)<br \/>\nif __name__ == '__main__':<br \/>\n&nbsp;&nbsp;&nbsp;    rakendus = wx.App()<br \/>\n&nbsp;&nbsp;&nbsp;    naide(None, 'Line')<br \/>\n&nbsp;&nbsp;&nbsp;    rakendus.MainLoop()<\/code><\/p>\n<p><code>#!\/usr\/bin\/python<br \/>\n# Pliiatsid.py<br \/>\nimport wx<br \/>\nclass Pliiatsid(wx.Frame):<br \/>\n&nbsp;&nbsp;&nbsp;    def __init__(self, parent, id, title):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        wx.Frame.__init__(self, parent, id, title, size=(350, 190))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        self.Bind(wx.EVT_PAINT, self.joonistaja)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        self.Centre()<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        self.Show(True)<br \/>\n&nbsp;&nbsp;&nbsp;    def joonistaja(self, event):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc = wx.PaintDC(self)<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.SetPen(wx.Pen('#000000', 1, wx.SOLID))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.SetBrush(wx.Brush('#c56c00'))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.DrawRectangle(10, 15, 90, 60)<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.SetPen(wx.Pen('#000000', 1, wx.DOT))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.SetBrush(wx.Brush('#1ac500'))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.DrawRectangle(130, 15, 90, 60)<\/p>\n<p> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       dc.SetPen(wx.Pen('#000000', 1, wx.LONG_DASH))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.SetBrush(wx.Brush('#539e47'))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.DrawRectangle(250, 15, 90, 60)<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.SetPen(wx.Pen('#000000', 1, wx.SHORT_DASH))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.SetBrush(wx.Brush('#004fc5'))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.DrawRectangle(10, 105, 90, 60)<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.SetPen(wx.Pen('#000000', 1, wx.DOT_DASH))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       dc.SetBrush(wx.Brush('#c50024'))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.DrawRectangle(130, 105, 90, 60)<\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.SetPen(wx.Pen('#000000', 1, wx.TRANSPARENT))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.SetBrush(wx.Brush('#5f3b00'))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.DrawRectangle(250, 105, 90, 60)<\/p>\n<p>app = wx.App()<br \/>\nPliiatsid(None, -1, 'Pliiatsid')<br \/>\napp.MainLoop()<\/code><\/p>\n<p>Joonlaud on kasulik elementide kauguse m\u00f5\u00f5tmiseks :)<br \/>\n<code>#!\/usr\/bin\/python<br \/>\nimport wx<\/p>\n<p>RW = 701 # ruler widht<br \/>\nRM = 10  # ruler margin<br \/>\nRH = 60  # ruler height<\/p>\n<p>class Ruler1(wx.Frame):<br \/>\n&nbsp;&nbsp;&nbsp;    def __init__(self, parent, id, title):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        wx.Frame.__init__(self, parent, id, title, size=(RW + 2*RM, 60),<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           style=wx.FRAME_NO_TASKBAR | wx.NO_BORDER | wx.STAY_ON_TOP)<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       self.font = wx.Font(7, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL,<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;           wx.FONTWEIGHT_BOLD, False, 'Courier 10 Pitch')<br \/>\n  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      self.Bind(wx.EVT_PAINT, self.OnPaint)<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDown)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        self.Bind(wx.EVT_RIGHT_DOWN, self.OnRightDown)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        self.Bind(wx.EVT_MOTION, self.OnMouseMove)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        self.Centre()<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        self.Show(True)<br \/>\n &nbsp;&nbsp;&nbsp;   def OnPaint(self, event):<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       dc = wx.PaintDC(self)<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       brush = wx.Brush('#0d0060')<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       dc.SetBrush(brush)<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       dc.DrawRectangle(0, 0, RW+2*RM, RH)<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       dc.SetFont(self.font)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.SetPen(wx.Pen('#F8FF25'))<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dc.SetTextForeground('#F8FF25')<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       for i in range(RW):<br \/>\n  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;          if not (i % 100):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                dc.DrawLine(i+RM, 0, i+RM, 10)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;                w, h = dc.GetTextExtent(str(i))<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;               dc.DrawText(str(i), i+RM-w\/2, 11)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;            elif not (i % 20):<br \/>\n  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;              dc.DrawLine(i+RM, 0, i+RM, 8)<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;            elif not (i % 2): dc.DrawLine(i+RM, 0, i+RM, 4)<br \/>\n&nbsp;&nbsp;&nbsp;    def OnLeftDown(self, event):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        pos = event.GetPosition()<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        x, y = self.ClientToScreen(event.GetPosition())<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        ox, oy = self.GetPosition()<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        dx = x - ox<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       dy = y - oy<br \/>\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;       self.delta = ((dx, dy))<br \/>\n&nbsp;&nbsp;&nbsp;    def OnMouseMove(self, event):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        if event.Dragging() and event.LeftIsDown():<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;            x, y = self.ClientToScreen(event.GetPosition())<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;            fp = (x - self.delta[0], y - self.delta[1])<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;            self.Move(fp)<br \/>\n&nbsp;&nbsp;&nbsp;    def OnRightDown(self, event):<br \/>\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;        self.Close()<br \/>\napp = wx.App()<br \/>\nRuler1(None, -1, '')<br \/>\napp.MainLoop()<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4na vaatame veel edasi v\u00f5imalusi luua graafilisi ehk akendes t\u00f6\u00f6tavaid programme. Seekord v\u00f5tame selleks veidi teise akenderaamistiku nimega wx. #!\/usr\/bin\/python # -*- coding: utf-8 -*- import wx #esmalt teeme raami ehk akna class MinuRaam(wx.Frame): &nbsp;&nbsp;&nbsp; def __init__(self): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wx.Frame.__init__(self, None, &hellip; <a href=\"https:\/\/python.pingviinitiivul.ee\/?p=148\">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-148","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts\/148","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=148"}],"version-history":[{"count":15,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts\/148\/revisions"}],"predecessor-version":[{"id":162,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=\/wp\/v2\/posts\/148\/revisions\/162"}],"wp:attachment":[{"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=148"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=148"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/python.pingviinitiivul.ee\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=148"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}