[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.python

Python events, panel with text

SMALLp

1/1/2008 11:55:00 PM

Hy!

I have many small panels with text and I want do bind wx.EVT_LEFT_DOWN
when clicked on panel, but i need to bind that in parent class. So I
have instance of that small panel and when i bind it efects only part of
small panel where is no text.

<code>

import wx

class RequestedFilesItems(wx.Panel):
def __init__(self, parent, id):
wx.Panel.__init__(self, parent, -1, style=wx.SUNKEN_BORDER)
sizer = wx.BoxSizer(wx.HORIZONTAL)

upButton = PanelButton(self, -1, "Upload")
upButton.Bind(wx.EVT_LEFT_DOWN, self.upload)
sizer.Add(upButton, 0, wx.LEFT, 15)



self.SetSizer(sizer)

def upload(self, event):
print "Please print this"



class PanelButton(wx.Panel):
def __init__(self, parent, id, buttonName):
wx.Panel.__init__(self, parent, -1, style=wx.SUNKEN_BORDER)
self.SetBackgroundColour("GREY")
sizer = wx.BoxSizer(wx.HORIZONTAL)
self.text = wx.StaticText(self, -1, buttonName)
sizer.Add(self.text, -1, wx.EXPAND | wx.ALL, 1)
self.text.Bind(wx.EVT_LEFT_DOWN, self.OnClick)
self.SetSizer(sizer)

def OnClick(self, event):
print "It only works for text, not for panel what I expected here"


if __name__ == '__main__':
app = wx.PySimpleApp()
frm = wx.Frame(None, wx.ID_ANY, 'Mouse-click test')
panel = RequestedFilesItems(frm, wx.ID_ANY)
frm.Show()
app.MainLoop()



app.MainLoop()

<code>
1 Answer

SMALLp

1/2/2008 1:05:00 PM

0

SMALLp wrote:
> Hy!
>
> I have many small panels with text and I want do bind wx.EVT_LEFT_DOWN
> when clicked on panel, but i need to bind that in parent class. So I
> have instance of that small panel and when i bind it efects only part of
> small panel where is no text.
>
> <code>
>
> import wx
>
> class RequestedFilesItems(wx.Panel):
> def __init__(self, parent, id):
> wx.Panel.__init__(self, parent, -1, style=wx.SUNKEN_BORDER)
> sizer = wx.BoxSizer(wx.HORIZONTAL)
>
> upButton = PanelButton(self, -1, "Upload")
> upButton.Bind(wx.EVT_LEFT_DOWN, self.upload)

i did smothing like this nad it works but id doesn't look so good:
upButton.text.Bind(wx.EVT_LEFT_DOWN, self.upload)

> sizer.Add(upButton, 0, wx.LEFT, 15)
>
>
>
> self.SetSizer(sizer)
>
> def upload(self, event):
> print "Please print this"
>
>
>
> class PanelButton(wx.Panel):
> def __init__(self, parent, id, buttonName):
> wx.Panel.__init__(self, parent, -1, style=wx.SUNKEN_BORDER)
> self.SetBackgroundColour("GREY")
> sizer = wx.BoxSizer(wx.HORIZONTAL)
> self.text = wx.StaticText(self, -1, buttonName)
> sizer.Add(self.text, -1, wx.EXPAND | wx.ALL, 1)
> self.text.Bind(wx.EVT_LEFT_DOWN, self.OnClick)
> self.SetSizer(sizer)
>
> def OnClick(self, event):
> print "It only works for text, not for panel what I expected here"
>
>
> if __name__ == '__main__':
> app = wx.PySimpleApp()
> frm = wx.Frame(None, wx.ID_ANY, 'Mouse-click test')
> panel = RequestedFilesItems(frm, wx.ID_ANY)
> frm.Show()
> app.MainLoop()
>
>
>
> app.MainLoop()
>
> <code>