关于wx.TextCtrl元素的一个简单问题。 我有一个文本字段在应用程序中,用户可以在其上添加字符串。 我想要一个带有红色文字的文本字段。 所以我已经生成了这段代码:
self.hRepositoryTextfield = wx.TextCtrl(self.hPanel)
self.hRepositoryTextfield.SetDefaultStyle(wx.TextAttr(wx.RED))
如果用户在此文本字段上复制带有应用字体的字符串(例如黑色字符串或具有特定字体的字符串)红色,则无论如何都不会遵循默认样式。 我想我的wx.TextCtrl决定的风格总是根据我的设置强制。 我能怎么做?
提前谢谢
阿克塞尔
答案 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)
它有效!