字体是决定文本外观的对象,字体用于将文本绘制到设备上下文,并设置窗口文本的外观。
一、wx.Font简介
创建自定义字体最简单的方法是使用wx. FontInfo对象指定字体属性,然后使用wx.Font构造函数来创建。
wx.Font的构造函数形式为:
wx.Font(pointSize,family,style,weight,underline,faceName,encoding)
参数:
pointSize: pointSize是字体的以磅为单位的整数尺寸。
family: family用于快速指定一个字体而无需知道该字体的实际的名字.字体的准确选择依赖于系统和具体可用的字体.你所得到的精确的字体将依赖于你的系统。字体类别如下:
- wx.DECORATIVE:一个正式的,老的英文样式字体;
- wx.DEFAULT:系统默认字体;
- wx.MODERN:一个单间隔(固定字符间距)字体。
- wx.ROMAN:serif字体,通常类似于Times New Roman。
- wx.SCRIPT:手写体或草写体。
- wx.SWISS:sans-serif字体,通常类似于Helvetica或Arial。
style: style参数指明字体的是否倾斜,它的值有:
- wx.NORMAL
- wx.SLANT
- wx.ITALIC
weight: weight参数指明字体的醒目程度,它的值有:
- wx.NORMAL: 普通字体;
- wx.LIGHT: 高亮字体;
- wx.BOLD: 粗体。
underline: underline参数仅工作在Windows系统下,如果取值为True,则加下划线,False为无下划线。
faceName: faceName参数指定字体名。
encoding: encoding参数允许你在几个编码中选择一个,它映射内部的字符和字本显示字符。编码不是Unicode编码,只是用于wxPython的不同的8位编码。大多数情况你可以使用默认编码。
wx.Font常用方法:
-
GetFaceName(self):返回与字体相关的face name,如果没有face信息则返回空字符串。
-
GetFamily(self):如果可能,获取字体族。如果wx.Font或底层系统无法识别当前字体面名称,则返回FONTFAMILY_DEFAULT。
-
GetPixelSize(self):获取字体的像素尺寸。
-
GetStyle(self):获取字体样式。
-
GetUnderlined(self):如果字体有下划线则返回True,否则返回False。
-
GetWeight(self):获取字体权重。
-
IsFixedWidth(self):如果字体是固定宽度(或等宽)字体则返回True,如果是比例字体或字体无效则返回False。
-
Italic(self):返回此字体的斜体版本。
-
Bold(self):返回此字体的粗体版本。
-
Underlined(self):返回该字体加下划线的版本。
-
MakeBold(self):将此字体更改为粗体。
-
MakeItalic(self):将此字体更改为斜体。
-
MakeUnderlined(self):将此字体更改为带下划线字体。
-
SetFaceName(self, faceName):设置字体的facename。
-
SetFamily(self, family):设置字体族。
-
SetPixelSize(self, pixelSize):设置字体的像素尺寸。
-
SetStyle(self, style):设置字体样式。
-
SetUnderlined(self, underlined):设置下划线。
-
SetWeight(self, weight):设置字体权重。
二、wx.Font演示
#字体(wx.Font)
import wx
class SampleFont(wx.Frame):
def __init__(self, *args, **kw):
super(SampleFont, self).__init__(*args, **kw)
self.InitUi()
def InitUi(self):
self.SetTitle("实战wxPython: 字体演示")
self.SetSize(400, 240)
panel = wx.Panel(self)
box = wx.BoxSizer(wx.VERTICAL)
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 = wx.StaticText(panel, wx.ID_ANY, style = wx.ALIGN_CENTER)
lbl.SetFont(font)
lbl.SetLabel(txt)
box.Add(lbl, 0, wx.ALIGN_CENTER)
lblwrap = wx.StaticText(panel, wx.ID_ANY, 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, wx.ID_ANY, 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()
def main():
app = wx.App()
sample = SampleFont(None)
sample.Show()
app.MainLoop()
if __name__ == "__main__":
main()
上面的代码演示了在wxPython的控件中如何使用wx.Font,运行结果如图1所示:
图1:wx.Font演示
三、本文知识点
前一篇:实战wxPython:058 - GDI基本元素之画刷Brush