我想在输入字段中添加一个提示(斜体、灰色、不可更改的文本),当用户键入第一个字符时该提示会被删除(或者该字段被聚焦,这不会那么好)。
这样做的理由是,只要该字段为空,就可以向用户提供有关该字段含义的一些提示。
文档位于 https://wxpython.org/Phoenix/docs/html/wx.TextCtrl.html 说文本样式(仅?)可用于多行字段,但我不需要。
这可以用wxpython TextCtrl实现吗?如何?
非常感谢!
一种简单的方法是将
Font
设置为具有您需要的属性,然后在“提示”文本退格时重置它们。import wx
class MainFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, title='Test TextCtrl')
self.panel = wx.Panel(self)
self.text1 = wx.TextCtrl(self.panel,value="Normal Text",pos=(10,10),size=(350,30))
self.text2 = wx.TextCtrl(self.panel,value="Italic greyed hint text",pos=(10,40),size=(350,30))
font = wx.Font(10, wx.DEFAULT, wx.FONTSTYLE_ITALIC, wx.NORMAL)
self.text2.SetFont(font)
self.text2.SetForegroundColour('#848484')
self.text2.Bind(wx.EVT_TEXT, self.On_Text_Active)
self.Show()
def On_Text_Active(self, event):
if self.text2.GetForegroundColour() == '#848484':
font = wx.Font(10, wx.DEFAULT, wx.NORMAL, wx.NORMAL)
self.text2.SetFont(font)
self.text2.SetForegroundColour(wx.BLACK)
self.text2.SetValue('')
if __name__ == '__main__':
app = wx.App()
frame = MainFrame()
app.MainLoop()
wx.TextCtrl是wx.TextEntry的子类,它有SetHint()方法。它并不完全符合您的要求:当字段聚焦时提示被删除,文本不是斜体(至少在 Linux 上)。但它很简单,并且与系统上其他类似的东西一致。