前言——Font 类
wx.Font 类在开发中为了设置控件字体,必不可少。然而,对于 Font 字体类的教程很多,却很久远。目前的 wxPython 的 Font 类的一些参数也早有更改,与其不同。而教程中提到的在 wxPython 里虽然还可以使用,但在 IDE 中已经无法检测到,基本标红。而且,上边提到的教程中因为没有与 wxPython 同时更新,少了一大半的样式。在本篇文章中将详细解释,纠正一下错误。
出示一个过时的构造……
上边出示的是一篇 2017 年的文章了。其他的说明大都与此相似。本篇文章将出示的与这一类不同,采用的最新标准,且使用的 wxPython 为 4.1.1 。
当然,也可以在 wxPython 官方的帮助文档 wx.Font 。
Font 构造及使用
Font 的构造不少,但常用的只有如下两种:
Font(fontInfo)
Font(pointSize, family, style, weight, underline=False, faceName="", encoding=FONTENCODING_DEFAULT)
现在能看到的除官方外的教程中大多数是第二种(如上文图片)。而其问题则是出在 family style weight 三个参数的取值上。这里我将将两种构造都介绍一遍。其他的构造方式有:
Font()
Font(font)
Font(pixelSize, family, style, weight, underline=False, faceName="", encoding=FONTENCODING_DEFAULT)
Font(nativeInfoString)
Font(nativeInfo)
这些构造方式可以在官网 wx.Font 上自行学习,这里不再赘述。
构造一 Font(fontInfo)
这种方式只需传一个参数 fontInfo ,而这个参数便是一个 FontInfo 类。了解这种构造方式自然而然就成为了了解 FontInfo 。以下即为 FontInfo 的构造之一。
FontInfo(pointSize)
当然,还有另一种 FontInfo(pixelSize)
,把 pointSize 改成了 pixelSize 。
继续对于 FontInfo(pointSize)
的构造作讲解。
这个参数 pointSize 自然是文字大小,为 float 浮点数对象。
方法
FontInfo 的方法及其作用如下。
- Bold(bold=True):为字设置粗体样式
- Light(light=True):为字设置较细样式
- 等等……
这些基本没有必要全数列举,毕竟构造二更加常用,功能一般更全。详细的讲解在下边的构造二中。
示例
from wx import *
font = Font(FontInfo(10).Bold().Underline())
上边的使用构造一创建的示例,即,创建了一个文字大小( pointSize )为 10 的粗体且带有下划线的字体。
构造二
这便是 Font 设置中最常用的一种,所以在下边会有详细的解释。
Font(pointSize, family, style, weight, underline=False, faceName="", encoding=FONTENCODING_DEFAULT)
pointSize
:文字大小:floatfamily
:字体系列:FontFamilystyle
:文字样式:FontStyleweight
:文字粗细:FontWeightunderline
:是否下划线:boolfaceName
:字体名:stringencoding
:文字编码:FontEncoding
其中, FontFamily 、 FontStyle 、 FontWeight 、 FontEncoding 是 wxPython 内置的样式。一下有说明。
FontFamily
FONTFAMILY_DEFAULT
:默认字体FONTFAMILY_DECORATIVE
: 装饰字体FONTFAMILY_ROMAN
:衬线字体FONTFAMILY_SCRIPT
:手写体FONTFAMILY_SWISS
: 无衬线字体FONTFAMILY_MODERN
: 等距字体FONTFAMILY_TELETYPE
:打字机字体
FontStyle
FONTSTYLE_NORMAL
:普通,没有倾斜FONTSTYLE_ITALIC
:(意大利)斜体FONTSTYLE_SLANT
:(罗马)斜体
FontWeight
FONTWEIGHT_THIN
:最细字体FONTWEIGHT_EXTRALIGHT
:极细字体FONTWEIGHT_LIGHT
:细体FONTWEIGHT_NORMAL
:正常字重FONTWEIGHT_MEDIUM
:中等字重(比FONTWEIGHT_NORMAL
稍粗)FONTWEIGHT_SEMIBOLD
:稍粗字体FONTWEIGHT_BOLD
:粗体FONTWEIGHT_EXTRABOLD
:较粗字体FONTWEIGHT_HEAVY
:极粗字体FONTWEIGHT_EXTRAHEAVY
:最粗字体
FontEncoding
FontEncoding 有非常多种,在此仅按照对有限的编码作解释,其余的直接列出
FONTENCODING_SYSTEM
:系统默认编码FONTENCODING_DEFAULT
:应用默认编码FONTENCODING_ISO8859_1
FONTENCODING_ISO8859_2
FONTENCODING_ISO8859_3
FONTENCODING_ISO8859_4
FONTENCODING_ISO8859_5
FONTENCODING_ISO8859_6
FONTENCODING_ISO8859_7
FONTENCODING_ISO8859_8
FONTENCODING_ISO8859_9
FONTENCODING_ISO8859_10
FONTENCODING_ISO8859_11
FONTENCODING_ISO8859_12
FONTENCODING_ISO8859_13
FONTENCODING_ISO8859_14
FONTENCODING_ISO8859_15
FONTENCODING_KOI8
FONTENCODING_KOI8_U
FONTENCODING_ALTERNATIVE
FONTENCODING_BULGARIAN
FONTENCODING_CP437
FONTENCODING_CP850
FONTENCODING_CP852
- ……
- ……
编码方式过多,这里肯定放不下。wx.FontEncoding 里可以查看。
后记
那么这篇对于 wx.Font 类的纠正兼教程就到此为止了。纠正的部分主要体现于四个枚举的说明。想学习更多 wxPython 知识,欢迎关注专栏 wxPython ~