我试图(但没有任何反应)
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()
我的第一反应是打电话给txt.Refresh()
因为我使用wx.TextCtrl在背景颜色没有更新和过类似的经历Refresh()
调用强制重绘。 然而,似乎这种做法是不正确的。
审查后StyledTextCtrl API ,它看起来像SetBackground()
是不是你想要的功能。 我的理解是,由于标准条款和条件可以在同一个盒子有多种风格,个人文本样式优先于STC的设置。
经过一番研究,我发现StyleSetBackground()函数。 这会修改默认样式,使得背景为红色,有效地设置背景为红色。 你需要调用它是这样的:
txt.StyleSetBackground(wx.stc.STC_STYLE_DEFAULT, (255,0,0))
只要记住,如果你使用多个样式,你可能需要进行调用为每一个这种方法。
- -编辑 - -
我忘了输入一些文字来检查我的代码的代码。 事实证明,如果你要做的就是调用SyleSetBackground()
像我上述建议,当你输入文本输入文本的背景仍然是白色的,而不是预期的红色。
多一点研究,我已经discoved通过调用设置背景色后,下面的代码,这是容易解决:
txt.StyleClearAll()
我的猜测是,当你创建StyledTextCtrl,其文本样式设置等于wx.stc.STC_STYLE_DEFAULT
。 到现在为止还挺好。 然而,在这之后我们改变的默认样式值(通过使红色背景),所以现在的文本样式和默认样式是不同的。 因此,我们需要调用StyleClearAll()到所有样式重置回默认样式(现在有一个红色背景)。
这个作品在我的电脑上就好了
self.txt.SetBackgroundColour((255,0,0))
你是什么操作系统?