wxpython textctrl 字体颜色_wxPython,更改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(),当你输入文本时,输入文本的背景仍然是白色,而不是预期的红色.

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

txt.StyleClearAll()

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

标签:python,wxpython,wxwidgets

来源: https://codeday.me/bug/20190626/1290218.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值