2010-02-20 59 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

相關問題