我想把提示(斜体,灰色,不可更改的文本)放到一个输入字段中,当用户输入第一个字符(或者字段被聚焦,这就不太好了)时,提示就会被删除。
其基本原理是只要字段为空,就会给用户一些关于字段含义的提示。
https://wxpython.org/Phoenix/docs/html/wx.TextCtrl.html的文档指出,文本样式是(only?)可用于多行字段,我不需要。
这可以通过wxpython TextCtrl实现吗?多么?
非常感谢!
发布于 2018-10-11 09:06:46
一种简单的方法是将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()
https://stackoverflow.com/questions/52746374
复制相似问题