我的第一反应是调用txt.Refresh()因为我有类似的经验使用wx.TextCtrl,其中背景颜色没有更新,而Refresh()调用强制重绘.但是,似乎方法不正确.
在查看了StyledTextCtrl API之后,似乎SetBackground()不是您想要的功能.我的理解是,因为STC可以在同一个框中有多个样式,所以各个文本样式优先于STC的设置.
经过一番研究,我找到了StyleSetBackground()的功能.这会修改默认样式,使背景为红色,有效地将背景设置为红色.你需要像这样调用它:
txt.StyleSetBackground(wx.stc.STC_STYLE_DEFAULT, (255,0,0))
请记住,如果您使用多个样式,则可能需要为每个样式调用此方法.
– -编辑 – –
我忘记通过输入一些文本来检查我的代码.事实证明,如果你所做的只是按照我的建议调用SyleSetBackground(),当你输入文本时,输入文本的背景仍然是白色,而不是预期的红色.
通过在设置背景颜色后调用以下代码,可以轻松修复此问题,我已经发现了这一点:
txt.StyleClearAll()
我的猜测是,当您创建StyledTextCtrl时,它将文本样式设置为等于wx.stc.STC_STYLE_DEFAULT.到现在为止还挺好.但是,在此之后我们更改默认样式的值(通过使背景变为红色),所以现在文本样式和默认样式是不同的.因此,我们需要调用StyleClearAll()将ALL STYLES重置为默认样式(现在具有红色背景).