wxPython中,更改StyledTextCtrl的背景颜色(wxPython ,Change t

2019-09-17 17:41发布

我试图(但没有任何反应)

    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()

Answer 1:

我的第一反应是打电话给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()到所有样式重置回默认样式(现在有一个红色背景)。



Answer 2:

这个作品在我的电脑上就好了

self.txt.SetBackgroundColour((255,0,0))

你是什​​么操作系统?



文章来源: wxPython ,Change the background colour of a StyledTextCtrl