03 wxPython StaticText类 02 wxPython 面板类 04 wxPython TextCtrl类 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参数采用以下值 下面给出了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() 上面的代码产生以下输出 02 wxPython 面板类 04 wxPython TextCtrl类