只是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)
它有效!