Help in wxpython

madhura vadvalkar madhura22 at gmail.com
Wed Dec 2 03:20:11 EST 2009


Hi

I am trying to write an  PAINT like application where on the mouse
click a circle is drawn on canvas. I am new to python and using
wxpython to create this.

here is the code:

import wx

class SketchWindow(wx.Window):

    def __init__ (self, parent,ID):

        wx.Window.__init__(self, parent, ID)

        self.panel =wx.Panel(self, size= (350,350))
        self.pen=wx.Pen( 'blue',4)
        self.pos=(0,0)
        self.InitBuffer()
        self.Bind(wx.EVT_LEFT_DOWN,self.OnLeftDown)

    def InitBuffer(self):

        size=self.GetClientSize()
        self.Buffer=wx.EmptyBitmap(size.width,size.height)
        dc=wx.BufferedDC(None,self.buffer)
        dc.SetBackground(wx.Brush(self.GetBackgroundColour()))
        dc.Clear()
        self.Drawcircle(dc)
        self.reInitBuffer=False

    def OnLeftDown(self,event):
        self.pos=event.GetPositionTuple()
        self.CaptureMouse()

    def Drawcircle(self,dc):
        pen=wx.Pen(colour,thickness,wx.SOLID)
        dc.SetPen(pen)
        dc.DrawCircle(self.pos.x,self.pos.y,r)

class SketchFrame(wx.Frame):
    def __init__(self, parent):

        wx.Frame.__init__(self, parent, -1, "Sketch Frame",size=(800,600))
        self.sketch = SketchWindow(self, -1)

if __name__=='__main__':
    app=wx.PySimpleApp()
    frame=SketchFrame(None)
    frame.Show(True)
    app.MainLoop()

I am getting the following error:

Traceback (most recent call last):
  File "C:/Python26/circle.py", line 42, in <module>
    frame=SketchFrame(None)
  File "C:/Python26/circle.py", line 38, in __init__
    self.sketch = SketchWindow(self, -1)
  File "C:/Python26/circle.py", line 12, in __init__
    self.InitBuffer()
  File "C:/Python26/circle.py", line 19, in InitBuffer
    dc=wx.BufferedDC(None,self.buffer)
AttributeError: 'SketchWindow' object has no attribute 'buffer'

Please tell me what I am doing wrong.

Thanks









-- 
Madhura



More information about the Python-list mailing list