2010-02-20 61 views
4

我有这样的代码:是否可以绑定wx.StaticText上的单击事件?

import wx 

class Plugin(wx.Panel): 
    def __init__(self, parent, *args, **kwargs): 
     panel = wx.Panel.__init__(self, parent, *args, **kwargs) 
     self.colorOver = ((89,89,89)) 
     self.colorLeave = ((110,110,110)) 
     self.colorFont = ((131,131,131)) 
     self.SetBackgroundColour(self.colorLeave) 
     self.SetForegroundColour(self.colorLeave) 
     self.name = "Plugin" 
     self.overPanel = 0 
     self.overLabel = 0 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     name = wx.StaticText(self, -1, ' ' + self.getName()) 
     close = wx.StaticText(self, -1, ' X ') 

     gs = wx.GridSizer(2, 2, 0, 0) 
     gs.AddMany([(name, 0, wx.ALIGN_LEFT), (close, 0, wx.ALIGN_RIGHT)]) 

     sizer.Add(gs, 1, wx.EXPAND) 
     self.SetSizer(sizer) 

     .... .... 

是否可以点击左侧的静态文本关闭并隐藏面板本身?

回答

4

我不知道是否有可能将wx.EVT_LEFT_DOWN绑定到StaticText小部件。你可以使用一个按钮来调用self.Hide()。如果您想要自定义外观,可能是BitmapButton。

class myPanel(wx.Panel): 
    def __init__(self, parent, *args, **kwargs): 
     wx.Panel.__init__(self, parent, *args, **kwargs) 
     bitmap = wx.EmptyBitmap(15,15) 
     self.button = wx.BitmapButton(self, -1, bitmap=bitmap, size=(15,15), style=wx.NO_BORDER) 
     self.Bind(wx.EVT_BUTTON, self.onClick, self.button) 

def onClick(self, event): 
    self.Hide() 
+0

这工作得很好。谢谢m8 :) – 2010-02-20 21:02:05

3

我似乎记得必须将静态文本放在一个框架或一些可以接收事件但不可见的对象内。然后,文本上的单击事件将传递给父级。我曾经有一个特殊的可点击标签派生类。

+0

你可以给我:) – 2010-02-20 19:51:39

+0

让我找到它......可能需要几分钟,它是在C++中,但它应该很容易转换。我认为最好先指出正确的方向,而不是花时间搜索我的旧代码。 – Harvey 2010-02-20 20:44:54

+0

哈维谢谢,但我不再需要它了:P 我使用了BitmapButton ^^ – 2010-02-20 21:02:59

相关问题