在 wxpython textctrl 字段中使用提示

问题描述 投票:0回答:2

我想在输入字段中添加一个提示(斜体、灰色、不可更改的文本),当用户键入第一个字符时该提示会被删除(或者该字段被聚焦,这不会那么好)。

这样做的理由是,只要该字段为空,就可以向用户提供有关该字段含义的一些提示。

文档位于 https://wxpython.org/Phoenix/docs/html/wx.TextCtrl.html 说文本样式(仅?)可用于多行字段,但我不需要。

这可以用wxpython TextCtrl实现吗?如何?

非常感谢!

wxpython user-input
2个回答
1
投票

一种简单的方法是将

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()

enter image description here


0
投票

wx.TextCtrlwx.TextEntry的子类,它有SetHint()方法。它并不完全符合您的要求:当字段聚焦时提示被删除,文本不是斜体(至少在 Linux 上)。但它很简单,并且与系统上其他类似的东西一致。

© www.soinside.com 2019 - 2024. All rights reserved.