On Mon, Jul 7, 2014 at 2:48 AM, Farrukh <[email protected]> wrote:

>  Hi
>      i am using wxpython 3.0.0 and python version 2.7,   i have modified
> piechart example to create clickable object of *FloatCanvas.Rectangle *but
> failed
>

How is it "failing" -- it works for me -- when I click on the rectangles, I
get a mesage on the console saying which one got clicked. What does it do
for you?

I just tested it with wxPython 2.9.4, on a Mac.

Maybe an issue with 3.0?

Some comments, below:

 here is my code:
>
> import wx
> import sys
> sys.path.append("..")
> from wx.lib.floatcanvas import NavCanvas, FloatCanvas
>
> class DrawFrame(wx.Frame):
>
>     def __init__(self, *args, **kwargs):
>         wx.Frame.__init__(self, *args, **kwargs)
>         self.CreateStatusBar()
>
>         NC = FloatCanvas.FloatCanvas(self, BackgroundColor = ( 147, 177,
> 217 ) )
>         self.canvas = NC
>
>         self.Shape = []
>
>         rect = FloatCanvas.Rectangle((30,10),(10, 10),    FillColor =
> wx.Colour(3, 2, 255, 240), LineColor = wx.Colour(250, 5, 5, 240), LineStyle
> = "Solid", LineWidth = 2 )
>         self.canvas.AddObject(rect)
>         self.Shape.append( rect )
>

# this is a chance to add an attribute to the rect, so that you can access
it later when it gets hit:
        rect.name = "the first rect"



>         rect = FloatCanvas.Rectangle((10,20),(10, 10),    FillColor =
> wx.Colour(3, 2, 255, 240), LineColor = wx.Colour(250, 5, 5, 240), LineStyle
> = "Solid", LineWidth = 2 )
>         self.canvas.AddObject(rect)
>         self.Shape.append( rect )
>

and here:
        rect.name = "the second rect"


>
>         rect = FloatCanvas.Rectangle((50,20),(10, 10),    FillColor =
> wx.Colour(3, 2, 255, 240), LineColor = wx.Colour(250, 5, 5, 240), LineStyle
> = "Solid", LineWidth = 2 )
>         self.canvas.AddObject(rect)
>         self.Shape.append( rect )
>

 and here:
        rect.name = "the second rect"


>         for i in range( len(self.Shape) ):
>             self.Shape[i].Bind(FloatCanvas.EVT_FC_LEFT_DOWN, self.PieHit)
>
>         FloatCanvas.EVT_MOTION(self.canvas, self.OnMove )
>
>         self.Show()
>         self.Center()
>         self.canvas.ZoomToBB()
>
>     def PieHit(self, obj):
>

this search is ugly -- but if you added aname attributre, you could just do:
          print obj.name, "hit!"


>         for i in range( len(self.Shape) ):
>             if obj == self.Shape[i]:
>                 print "Rectangle"+str(i)+" hit!"
>                 self.SetTitle("Rectangle"+str(i)+" hit!")
>
>     def OnMove(self, event):
>         self.SetStatusText("%.2g, %.2g"%tuple(event.Coords))
>
>
> app = wx.App(False)
> F = DrawFrame(None, title="Modified FloatCanvas Demo", size=(700,700) )
> app.MainLoop()
>
>
> ------------------------------
>    <http://www.avast.com/>
>
> This email is free from viruses and malware because avast! Antivirus
> <http://www.avast.com/> protection is active.
>
>
> _______________________________________________
> FloatCanvas mailing list
> [email protected]
> http://mailman.paulmcnett.com/cgi-bin/mailman/listinfo/floatcanvas
>
>


-- 

Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R            (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception

[email protected]
_______________________________________________
FloatCanvas mailing list
[email protected]
http://mailman.paulmcnett.com/cgi-bin/mailman/listinfo/floatcanvas

Reply via email to