gpt4 book ai didi

python - wxPython,改变 StyledTextCtrl 的背景颜色

转载 作者:太空狗 更新时间:2023-10-30 03:05:46 24 4
gpt4 key购买 nike

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

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

最佳答案

我的第一 react 是调用 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()将所有样式重置为默认样式(现在具有红色背景)。

关于python - wxPython,改变 StyledTextCtrl 的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10866078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com