wxPython - StaticText 类

GUI 界面中的另一个重要元素是标签,即一行或多行的只读文本。 它通常作为另一个小部件的标识符或作为信息字符串放置在框架上。

在wxPython 中,wx.StaticText 类 对象提供了一个包含这种只读文本的控件。 它可以称为被动控件,因为它不产生任何事件。 Wx.StaticText 类构造函数需要以下常用参数 −

Wx.StaticText(parent, id, label, position, size, style)

预定义 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 类的以下方法也很有用 −

S.N. 方法与说明
1

SetLabel()

以编程方式设置对象的标签

2

GetLabel()

返回对象的标签

3

SetForeGroundColour()

设置标签文本的颜色

4

SetBackGroundColour()

设置标签的背景

5

Wrap()

如果尺寸无法容纳标签的文本,则将其换行。

StaticText 类的上述特性在以下示例中进行了演示。 三个 StaticText 对象被放置在一个垂直的 box sizer 中。

第一个对象有居中对齐的多行文本。 第二个标签的文本设置为环绕超过 200 像素。 第三个标签在文本中间显示省略号 (...)。

为了设置标签的字体,首先创建一个字体对象。

Wx.Font(pointsize, fontfamily, fontstyle, fontweight)

Fontfamily 参数采用以下值 −

S.N. 参数 & 说明
1

wx.FONTFAMILY_DEFAULT

选择默认字体

2

wx.FONTFAMILY_DECORATIVE

选择装饰字体

3

wx.FONTFAMILY_ROMAN

选择 formal, serif 字体

4

wx.FONTFAMILY_SCRIPT

选择手写字体

5

wx.FONTFAMILY_SWISS

选择 sans-serif 字体

6

wx.FONTFAMILY_MODERN

选择固定间距字体

7

wx.FONTFAMILY_TELETYPE

选择电传(等宽)字体

FontStyle 参数枚举 −

S.N. 参数 & 说明
1

Wx.FONTSTYLE_NORMAL

字体不倾斜

2

wx.FONTSTYLE_ITALIC

字体以斜体样式倾斜

3

wx.FONTSTYLE_SLANT

字体是倾斜的,但是是罗马字体

FontWeight 参数是 −

S.N. 参数 & 说明
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()

以上代码产生如下输出 −

StaticText 输出

❮ wxPython 主要类