【问题标题】:wxPython ,Change the background colour of a StyledTextCtrlwxPython ,改变 StyledTextCtrl 的背景颜色
【发布时间】:2012-06-07 15:03:26
【问题描述】:

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

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

【问题讨论】:

    标签: python wxpython wxwidgets


    【解决方案1】:

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

    【讨论】:

    • 我刚刚在问题中添加了代码,你能告诉我它是否适用于你的计算机吗?我尝试刷新小部件但没有任何进展。
    • 很好用!你知道为什么输入一些文字后,文字背景是白色的,如何解决?
    • @user1357159 再做一点研究,我更新了我的答案。希望它现在可以工作。
    • 哇太棒了!非常感谢您的帮助!
    【解决方案2】:

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

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

    你的操作系统是什么?

    【讨论】:

    • 我正在使用 Windows Vista 32 位,您可以发布您尝试过的代码吗?我想看看这是否适合我
    • 这是我的代码:“self.txt=wx.TextCtrl(self,-1,'',pos=(10,10),size=(100,-1)) self.txt .SetBackgroundColour((255,0,0))"
    • 你犯了同样的错误,你认为 wx.TextCtrl 和 wx.stc.StyledTextCtrl 的操作方式相同。结果他们没有。
    猜你喜欢
    • 2012-04-02
    • 1970-01-01
    • 2013-07-20
    • 2015-05-23
    • 2018-03-08
    • 2011-05-16
    • 2013-04-28
    相关资源
    最近更新 更多