wxPython - StaticText 类

  • 简述

    GUI 界面中的另一个重要元素是标签,即一行或多行的只读文本。它通常作为另一个小部件的标识符或作为信息字符串放置在框架上。
    在 wxPython 中,wx.StaticText classobject 表示一个控件,该控件包含此类只读文本。它可以被称为被动控制,因为它不产生任何事件。Wx.StaticText 类构造函数需要以下常用参数 -
    
    Wx.StaticText(parent, id, label, position, size, style)
    
    预定义的样式枚举器是 -
    wx.ALIGN_LEFT 控制标签在尺寸内的对齐方式
    wx.ALIGN_RIGHT
    wx.ALIGN_CENTER
    wx.ST_NO_AUTORESIZE 防止自动调整标签大小
    wx.ST_ELLIPSIZE_START 如果文本大小大于标签大小,省略号 (...) 会出现在开头、中间或结尾
    wx.ST_ELLIPSIZE_MIDDLE
    wx.ST_ELLIPSIZE_END
    wx.StaticText 类的以下方法也很有用 -
    序列号 方法和描述
    1
    SetLabel()
    以编程方式设置对象的标签
    2
    GetLabel()
    返回对象的标签
    3
    SetForeGroundColour()
    设置标签文本的颜色
    4
    SetBackGroundColour()
    设置标签的背景
    5
    Wrap()
    如果标签的文本无法容纳在大小范围内,则将其换行。
    StaticText 类的上述特性在下面的示例中进行了演示。三个 StaticText 对象被放置在一个垂直的 box sizer 中。
    第一个对象具有居中对齐的多行文本。第二个标签的文本设置为环绕超过 200 像素。第三个标签在文本中间显示省略号 (...)。
    为了设置标签的字体,首先创建一个字体对象。
    
    Wx.Font(pointsize, fontfamily, fontstyle, fontweight)
    
    Fontfamily 参数采用以下值 -
    序列号 参数及说明
    1
    wx.FONTFAMILY_DEFAULT
    选择默认字体
    2
    wx.FONTFAMILY_DECORATIVE
    选择装饰字体
    3
    wx.FONTFAMILY_ROMAN
    选择正式的衬线字体
    4
    wx.FONTFAMILY_SCRIPT
    选择手写字体
    5
    wx.FONTFAMILY_SWISS
    选择无衬线字体
    6
    wx.FONTFAMILY_MODERN
    选择固定间距字体
    7
    wx.FONTFAMILY_TELETYPE
    选择电传打字机(等宽)字体
    FontStyle 参数枚举是 -
    序列号 参数及说明
    1
    Wx.FONTSTYLE_NORMAL
    字体绘制不倾斜
    2
    wx.FONTSTYLE_ITALIC
    字体以斜体样式倾斜
    3
    wx.FONTSTYLE_SLANT
    字体是倾斜的,但采用罗马风格
    FontWeight 参数是 -
    序列号 参数及说明
    1
    Wx.FONTWEIGHT_NORMAL
    普通字体
    2
    wx.FONTWEIGHT_LIGHT
    浅字体
    3
    wx.FONTWEIGHT_BOLD
    粗体
    完整的代码清单是 -
    
    import wx 
     
    class Mywin(wx.Frame): 
       def __init__(self, parent, title): 
          super(Mywin, self).__init__(parent, title = title,size = (600,200))
          panel = wx.Panel(self) 
          box = wx.BoxSizer(wx.VERTICAL) 
          lbl = wx.StaticText(panel,-1,style = wx.ALIGN_CENTER) 
              
          txt1 = "Python GUI development" 
          txt2 = "using wxPython" 
          txt3 = " Python port of wxWidget " 
          txt = txt1+"\n"+txt2+"\n"+txt3 
              
          font = wx.Font(18, wx.ROMAN, wx.ITALIC, wx.NORMAL) 
          lbl.SetFont(font) 
          lbl.SetLabel(txt) 
              
          box.Add(lbl,0,wx.ALIGN_CENTER) 
          lblwrap = wx.StaticText(panel,-1,style = wx.ALIGN_RIGHT) 
          txt = txt1+txt2+txt3 
              
          lblwrap.SetLabel(txt) 
          lblwrap.Wrap(200) 
          box.Add(lblwrap,0,wx.ALIGN_LEFT) 
              
          lbl1 = wx.StaticText(panel,-1, style = wx.ALIGN_LEFT | wx.ST_ELLIPSIZE_MIDDLE) 
          lbl1.SetLabel(txt) 
          lbl1.SetForegroundColour((255,0,0)) 
          lbl1.SetBackgroundColour((0,0,0)) 
              
          font = self.GetFont() 
          font.SetPointSize(20) 
          lbl1.SetFont(font) 
              
          box.Add(lbl1,0,wx.ALIGN_LEFT) 
          panel.SetSizer(box) 
          self.Centre() 
          self.Show() 
              
    app = wx.App() 
    Mywin(None,  'StaticText demo') 
    app.MainLoop()
    
    上面的代码产生以下输出 -
    静态文本输出