wxPython – 静态文本类
GUI界面的另一个重要元素是标签,一个或多个行的只读文本。它通常被放置在框架上,作为另一个widget的标识符或作为一个信息字符串。
在wxPython中, wx.StaticText类 对象提供了一个持有这种只读文本的控件。它可以被称为被动控件,因为它不产生任何事件。Wx.StaticText类的构造函数需要以下常用参数
Wx.StaticText(parent, id, label, position, size, style)
Predefined style enumerators are −
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最常用的方法 S.N. | 方法和描述 |
---|---|
1 | SetLabel() 以编程方式设置对象的标签 |
2 | GetLabel() 返回对象的标签 |
3 | SetForeGroundColour() 设置标签文本的颜色 |
4 | SetBackGroundColour() 设置标签的背景 |
5 | Wrap() 如果标签的尺寸无法容纳,则包裹标签的文本。 |
StaticText类的上述特征在下面的例子中得到了证明。三个StaticText对象被放置在一个垂直的盒子尺寸中。
第一个对象有多行文本,是居中对齐的。第二个标签的文本被设置为环绕在200像素之外。第三个标签在文本的中间显示省略号(…)。
为了设置标签的字体,首先要创建一个字体对象。
Wx.Font(pointsize, fontfamily, fontstyle, fontweight)
Fontfamily参数的取值如下
以下是最常用的Fontfamily参数 。 S.N. | 参数和描述 |
---|---|
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参数的枚举有
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()
上述代码产生的输出结果如下 –