简述
GUI 界面中的另一个重要元素是标签,即一行或多行的只读文本。它通常作为另一个小部件的标识符或作为信息字符串放置在框架上。
在 wxPython 中,wx.StaticText classobject 表示一个控件,该控件包含此类只读文本。它可以被称为被动控制,因为它不产生任何事件。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 类的以下方法也很有用 -
序列号 |
方法和描述 |
1 |
SetLabel()
以编程方式设置对象的标签 |
2 |
GetLabel()
返回对象的标签 |
3 |
SetForeGroundColour()
设置标签文本的颜色 |
4 |
SetBackGroundColour()
设置标签的背景 |
5 |
Wrap()
如果标签的文本无法容纳在大小范围内,则将其换行。 |
StaticText 类的上述特性在下面的示例中进行了演示。三个 StaticText 对象被放置在一个垂直的 box sizer 中。
第一个对象具有居中对齐的多行文本。第二个标签的文本设置为环绕超过 200 像素。第三个标签在文本中间显示省略号 (...)。
为了设置标签的字体,首先创建一个字体对象。
Wx.Font(pointsize, fontfamily, fontstyle, fontweight)
Fontfamily 参数采用以下值 -
序列号 |
参数及说明 |
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 参数枚举是 -
序列号 |
参数及说明 |
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()
上面的代码产生以下输出 -