Используйте подсказку в поле wxpython textctrl - PullRequest
0 голосов
/ 10 октября 2018

Я хотел бы поместить подсказку (курсив, серый, неизменяемый текст) в поле ввода, которое удаляется, когда пользователь вводит первый символ (или поле фокусируется, что будет не так приятно).

Смысл в том, чтобы дать пользователю подсказку о значении поля, если оно пустое.

В документации по https://wxpython.org/Phoenix/docs/html/wx.TextCtrl.html говорится, что стили текста (только?) Доступны для многострочных полей, которые мне не нужны.

Можно ли этого добиться с помощью wxpython TextCtrl?Как?

Большое спасибо!

1 Ответ

0 голосов
/ 11 октября 2018

Один простой способ - задать для 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

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