wxPython - wx.TextCtrl - 强制样式

时间:2012-12-13 16:02:17

标签: python styles wxpython textctrl wx.textctrl

关于wx.TextCtrl元素的一个简单问题。 我有一个文本字段在应用程序中,用户可以在其上添加字符串。 我想要一个带有红色文字的文本字段。 所以我已经生成了这段代码:

self.hRepositoryTextfield = wx.TextCtrl(self.hPanel)
self.hRepositoryTextfield.SetDefaultStyle(wx.TextAttr(wx.RED))

如果用户在此文本字段上复制带有应用字体的字符串(例如黑色字符串或具有特定字体的字符串)红色,则无论如何都不会遵循默认样式。 我想我的wx.TextCtrl决定的风格总是根据我的设置强制。 我能怎么做?

提前谢谢

阿克塞尔

3 个答案:

答案 0 :(得分:1)

SetForegroundColor可能在一个操作系统上运行而在另一个操作系统上运行。这取决于本机小部件。我将TextCtrl的样式标志设置为wx.TE_RICH。查看wxPython演示的示例。你也可以使用甚至HTMLCtrl的StyledTextCtrl或FancyText。

答案 1 :(得分:0)

self.hRepositoryTextfield.SetForegroundColor(wx.RED)

应该有用......

答案 2 :(得分:0)

我用这种方式解决了这个问题:

在代码的第一部分中定义了我的文本字段样式......

self.hRepositoryTextfield.SetStyle(0, len(self.hRepositoryTextfield.GetValue()), wx.TextAttr(wx.RED))
self.hRepositoryTextfield.SetFont(self.hFontLabel)
self.hRepositoryTextfield.Bind(wx.EVT_TEXT, self.forceDefaultStyle)

...然后我将每个文本更改绑定到我的强制风格函数:

def forceDefaultStyle(self, event):
    hEventObject = event.GetEventObject()
    hEventObject.SetStyle(0, len(self.hRepositoryTextfield.GetValue()), wx.TextAttr(wx.RED))
    hEventObject.SetFont(self.hFontLabel)

它有效!