wxPython StaticText类

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

在wxPython中, wx.StaticText类 对象提供了一个包含此类只读文本的控件。它可以被称为被动控制,因为它不会产生任何事件。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类的以下方法也很有用。

下面给出了wx.StaticText最常用的方法:

序号 方法和描述
1

SetLabel()

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

2

GetLabel()

返回对象的标签

3

SetForeGroundColour()

设置标签文本的颜色

4

SetBackGroundColour()

设置标签的背景

5

Wrap()

如果标签的尺寸不能容纳,请将标签的文字包裹起来。

以下示例演示了StaticText类的上述功能。三个StaticText对象放置在垂直框大小调整器中。

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

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

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

Fontfamily参数采用以下值:

序号 参数和描述
1

wx.FONTFAMILY_DEFAULT

选择默认字体

2

wx.FONTFAMILY_DECORATIVE

选择装饰字体

3

wx.FONTFAMILY_ROMAN

选择正式的衬线字体

4

wx.FONTFAMILY_SCRIPT

选择手写字体

wx.FONTFAMILY_SWISS

选择sans-serif字体

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()

上面的代码产生以下输出:

静态文本输出

下一章:wxPython TextCtrl类

在GUI界面中,输入最常收集在文本框中,用户可以使用键盘进行键入。在wxPython中,wx.TextCtrl类的对象用于此目的。它是一个可以显示和编辑文本的控件。所述TextCtrl插件可以是单线,多 ...