是否可以在wx.StaticText上绑定on click事件?

时间:2010-02-20 16:49:40

标签: python wxpython

我有这段代码:

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)

        .... ....

是否可以左键单击StaticText关闭并隐藏面板本身?

3 个答案:

答案 0 :(得分: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()

答案 1 :(得分:3)

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

答案 2 :(得分:0)

您可以使用 EVT_LEFT_DOWN 或 EVT_LEFT_UP 来检测 StaticText 小部件上的鼠标操作

close.Bind(wx.EVT_LEFT_DOWN, self.hide_frame)