我试过(但没有任何反应)
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可以在同一个框中有多个样式,所以各个文本样式优先于STC的设置.
经过一番研究,我找到了StyleSetBackground()的功能.这会修改默认样式,使背景为红色,有效地将背景设置为红色.你需要像这样调用它:
txt.StyleSetBackground(wx.stc.STC_STYLE_DEFAULT, (255,0,0))
请记住,如果您使用多个样式,则可能需要为每个样式调用此方法.
– -编辑 – –
我忘记通过输入一些文本来检查我的代码.事实证明,如果你所做的只是按照我的建议调用SyleSetBackground(),当你输入文本时,输入文本的背景仍然是白色,而不是预期的红色.
通过在设置背景颜色后调用以下代码,可以轻松修复此问题,我已经发现了这一点:
txt.StyleClearAll()
我的猜测是,当您创建StyledTextCtrl时,它将文本样式设置为等于wx.stc.STC_STYLE_DEFAULT.到现在为止还挺好.但是,在此之后我们更改默认样式的值(通过使背景变为红色),所以现在文本样式和默认样式是不同的.因此,我们需要调用StyleClearAll()将ALL STYLES重置为默认样式(现在具有红色背景).
标签:python,wxpython,wxwidgets
来源: https://codeday.me/bug/20190626/1290218.html