Можно ли связать событие нажатия на wx.StaticText? - PullRequest
4 голосов
/ 20 февраля 2010

У меня есть этот код:

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 и скрыть саму панель?

Ответы [ 2 ]

4 голосов
/ 20 февраля 2010

Я не знаю, возможно ли связать 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()
3 голосов
/ 20 февраля 2010

Кажется, я вспоминаю о необходимости поместить статический текст в рамку или какой-либо объект, который мог бы получать события, но был сделан невидимым. Затем событие click для текста передается родителю. Раньше у меня был специальный производный класс для кликабельных меток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...