import wx class DefaultTextCtrl(wx.TextCtrl): def __init__(self, defaultText, *args, **kwargs): self.defaultText = defaultText wx.TextCtrl.__init__(self, *args, **kwargs) self.SetValue(self.defaultText) # getting the current font self.__defaultColour = self.BackgroundColour self.Bind( wx.EVT_KEY_DOWN, self.OnKeyDown ) self.Bind( wx.EVT_KEY_UP, self.OnKeyUp ) @property def defaultText(self): return self.__defaultText @defaultText.setter def defaultText(self, defaultText): self.__defaultText = defaultText def OnKeyDown(self, evt): if self.defaultText in (None,''): evt.Skip() return currText= self.GetValue() if currText == self.defaultText: self.SetValue('') evt.Skip() def OnKeyUp(self, evt): if self.defaultText in (None,''): evt.Skip() return currText= self.GetValue() if currText == '': self.SetValue(self.defaultText) evt.Skip() if __name__ == '__main__': # creating an app app = wx.App() frame = wx.Frame(None, title='TextCtrl Default Text Example') sizer = wx.BoxSizer( wx.VERTICAL ) defaultTextCtrl = DefaultTextCtrl("Custom text", frame, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 ) sizer.Add( defaultTextCtrl, 0, wx.ALL, 5 ) frame.SetSizer( sizer ) frame.Layout() frame.Centre( wx.BOTH ) frame.Show() app.MainLoop()