繁体   English   中英

wxPython,更改StyledTextCtrl的背景颜色

[英]wxPython ,Change the background colour of a StyledTextCtrl

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

    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()我的建议调用SyleSetBackground() ,当你输入文本时,输入文本的背景仍然是白色,而不是预期的红色。

通过在设置背景颜色后调用以下代码,可以轻松修复此问题,我已经发现了这一点:

txt.StyleClearAll()

我的猜测是,当您创建StyledTextCtrl时,它将文本样式设置为等于wx.stc.STC_STYLE_DEFAULT 到现在为止还挺好。 但是,在此之后我们更改默认样式的值(通过使背景变为红色),所以现在文本样式和默认样式是不同的。 因此,我们需要调用StyleClearAll()将ALL STYLES重置为默认样式(现在具有红色背景)。

这在我的电脑上运行得很好

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

你的操作系统是什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM