wxPython - wx.文本控制 - 强制样式



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

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

如果用户在此文本字段上复制一些应用了字体的字符串(例如黑色字符串或具有特定字体的字符串),则红色,无论如何不遵守默认样式。我想要我为我的WX决定的风格。TextCtrl 总是根据我的设置强制使用。我该怎么办?

提前谢谢你

阿克塞尔

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

self.hRepositoryTextfield.SetForegroundColor(wx.RED)

那应该可以工作....

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

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

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)

它有效!

最新更新