You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python修改wx.sbSizer的标签颜色与字体大小

wxPython修改StaticBoxSizer标签样式的解决方案

wx.StaticBoxSizer的标签文本由它内部绑定的wx.StaticBox控件渲染,你只需要获取到这个StaticBox实例,调用对应的属性修改接口即可。

你可以在创建sbSizer1_2_1之后,添加如下代码修改样式:

# 从StaticBoxSizer中获取绑定的StaticBox对象
static_box = sbSizer1_2_1.GetStaticBox()
# 修改标签文本颜色,支持内置颜色常量或自定义RGB值
static_box.SetForegroundColour(wx.Colour(200, 30, 30))
# 自定义字体,参数依次为:字号、字体族、字体样式、字重、可选指定具体字体名称
custom_font = wx.Font(
    pointSize=14,
    family=wx.FONTFAMILY_SWISS,
    style=wx.FONTSTYLE_NORMAL,
    weight=wx.FONTWEIGHT_BOLD,
    faceName="微软雅黑"
)
static_box.SetFont(custom_font)

修改后的完整可运行示例如下:

import wx

class MyFrame ( wx.Frame ):
        
    def __init__( self, parent ):
        wx.Frame.__init__ ( self, parent, id = wx.ID_ANY, title = wx.EmptyString, pos = wx.DefaultPosition, size = wx.Size( 500,300 ), style = wx.DEFAULT_FRAME_STYLE|wx.TAB_TRAVERSAL )
        
        self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
        
        bSizer1 = wx.BoxSizer( wx.VERTICAL )
        
        self.m_panel31 = wx.Panel( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TRAVERSAL )
        bSizer1_2 = wx.BoxSizer( wx.VERTICAL )
        
        # 创建StaticBox和对应的Sizer
        static_box = wx.StaticBox( self.m_panel31, wx.ID_ANY, u"MyApp" )
        sbSizer1_2_1 = wx.StaticBoxSizer( static_box, wx.VERTICAL )

        # ========== 修改标签样式的代码 ==========
        # 改颜色为红色
        static_box.SetForegroundColour(wx.RED)
        # 自定义字体:14号、加粗
        custom_font = wx.Font(14, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD)
        static_box.SetFont(custom_font)
        # =======================================
        
        self.m_button6 = wx.Button( sbSizer1_2_1.GetStaticBox(), wx.ID_ANY, u"1", wx.DefaultPosition, wx.DefaultSize, 0 )
        sbSizer1_2_1.Add( self.m_button6, 0, wx.ALL, 5 )
        
        self.m_button7 = wx.Button( sbSizer1_2_1.GetStaticBox(), wx.ID_ANY, u"2", wx.DefaultPosition, wx.DefaultSize, 0 )
        sbSizer1_2_1.Add( self.m_button7, 0, wx.ALL, 5 )
        
        bSizer1_2.Add( sbSizer1_2_1, 1, wx.EXPAND, 5 )
        
        self.m_panel31.SetSizer( bSizer1_2 )
        self.m_panel31.Layout()
        bSizer1_2.Fit( self.m_panel31 )
        bSizer1.Add( self.m_panel31, 1, wx.EXPAND |wx.ALL, 5 )
        
        self.SetSizer( bSizer1 )
        self.Layout()
        
        self.Centre( wx.BOTH )
    
    def __del__( self ):
        pass

if __name__ == "__main__":
    app = wx.App(redirect=False)
    frame = MyFrame(None)
    app.SetTopWindow(frame)
    frame.Show(True)
    app.MainLoop()

如果使用的是旧版本wxPython,把代码中的SetSizeHints改回SetSizeHintsSz即可正常运行。

内容的提问来源于stack exchange,提问作者TMoover

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:36:02