我试过了(但什么也没发生)
self.txt.SetBackgroundColour ((255,0,0))
如标题中所述,我正在尝试更改背景颜色样式extctrl。有人知道可以使用的方法吗?我已经检查了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可以在同一个框中有多个样式,因此单个文本样式优先于STC的设置。经过一些研究,我发现了StyleSetBackground()函数。这将修改默认样式,使背景变为红色,从而有效地将背景设置为红色。你需要这样称呼它:
请记住,如果使用多个样式,则可能需要为每个样式调用此方法。
---编辑---
我忘了输入一些文本来检查我的代码。结果是,如果您所做的只是调用
SyleSetBackground()
,就像我上面建议的那样,当您输入文本时,输入文本的背景仍然是白色,而不是预期的红色。再多研究一下,我发现在设置背景颜色后,通过调用以下代码可以很容易地解决这个问题:
我的猜测是,当您创建StyledTextCtrl时,它会将文本样式设置为
wx.stc.STC_STYLE_DEFAULT
。到现在为止,一直都还不错。但是,在这一点之后,我们更改了默认样式的值(通过使背景变红),所以现在文本样式和默认样式是不同的。因此,我们需要调用StyleClearAll()来将所有样式重置回默认样式(它现在有一个红色背景)。这在我的电脑上很管用
你的操作系统是什么?
相关问题 更多 >
编程相关推荐