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()
以上代码产生如下输出 −