如何为wxPython的dc.DrawText()设置文本颜色?替代方案探讨
为wxPython的dc.DrawText()设置非黑色文本颜色的直接方法
要给dc.DrawText()绘制的文本设置非黑色颜色,不需要借助DrawTextList,直接使用dc.SetTextForeground()方法即可,这是更直接优雅的方式。
修正后的代码示例
title_text = "Parabola" title_font = wx.Font(wx.FontInfo(20)) dc = wx.PaintDC(self) # 设置文本前景色(即文本颜色) dc.SetTextForeground(wx.Colour("blue")) dc.SetFont(title_font) title_w, title_h = dc.GetTextExtent(title_text) title_pt = wx.Point(int(x_mid - title_w / 2), int(y_min-title_h)) dc.DrawText(text=title_text, pt=title_pt)
关键说明
dc.SetPen()是用来设置绘图时的线条颜色(比如画直线、图形边框),对文本颜色没有影响,你之前的代码里调用它属于无效操作。SetTextForeground()专门控制文本的绘制颜色,设置后后续的DrawText()都会使用这个颜色,直到你再次修改。- 如果需要设置文本的背景色,可以使用
dc.SetTextBackground()。
你使用DrawTextList的方案确实可行,但针对单个文本字符串的场景,SetTextForeground() + DrawText()的组合更简洁直接,符合你的需求。
内容的提问来源于stack exchange,提问作者crs
相关产品推荐
相关产品推荐

