我试过(但没有任何反应)
self.txt.SetBackgroundColour ((255,0,0))
如标题中所述,我正在尝试更改背景颜色StyledTextCtrl。有谁知道可以使用的方法?我已经检查了API文档,但我似乎无法找到一个,http://wxpython.org/docs/api/wx.stc.StyledTextCtrl-class.html
(按背景颜色,我的意思是整个书写区域,当然)
有谁知道我能这样做的方法吗?
编辑:
以下代码中的背景不会改变
import wx
import wx.stc
app = wx.App(redirect=True)
top = wx.Frame(None, title="StyledTXTCtrl", size=(300,200))
txt=wx.stc.StyledTextCtrl(top)
txt.SetBackgroundColour((255,255,0))
txt.Refresh()
top.Show()
app.MainLoop()
答案 0 :(得分:3)
我的第一反应是调用txt.Refresh()
,因为我在使用wx.TextCtrl方面有类似的经验,其中背景颜色没有更新,Refresh()
调用强制重绘。但是,似乎这种做法不正确。
在审核StyledTextCtrl API后,似乎SetBackground()
不是您想要的功能。我的理解是,因为STC可以在同一个框中有多个样式,所以各个文本样式优先于STC的设置。
经过一番研究后,我找到了StyleSetBackground()功能。这会修改默认样式,使背景为红色,有效地将背景设置为红色。你需要这样称呼它:
txt.StyleSetBackground(wx.stc.STC_STYLE_DEFAULT, (255,0,0))
请记住,如果您使用多种样式,则可能需要为每种样式调用此方法。
--- --- EDIT
我忘记通过输入一些文本来检查我的代码。事实证明,如果你所做的只是按照我的建议调用SyleSetBackground()
,当你输入文字时,输入文字的背景仍然是白色,而不是预期的红色。
通过在设置背景颜色后调用以下代码,可以轻松修复此问题,我已经发现了这一点:
txt.StyleClearAll()
我的猜测是,当您创建StyledTextCtrl时,它会将文本样式设置为wx.stc.STC_STYLE_DEFAULT
。到现在为止还挺好。但是,在此之后我们更改默认样式的值(通过使背景变为红色),所以现在文本样式和默认样式是不同的。因此,我们需要调用StyleClearAll()将所有样式重置为默认样式(现在具有红色背景)。
答案 1 :(得分:1)
这在我的电脑上运行得很好
self.txt.SetBackgroundColour((255,0,0))
你的操作系统是什么?