实战wxPython:059 - GDI基本元素之字体Font

本文介绍了wx.Font在wxPython中的使用,包括通过wx.FontInfo创建字体、设置字体属性如大小、风格、重量等,并展示了wx.Font的各种方法。还提供了一个示例代码,演示如何在GUI应用中应用自定义字体。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字体是决定文本外观的对象,字体用于将文本绘制到设备上下文,并设置窗口文本的外观。

一、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(selffaceName):设置字体的facename。
  • SetFamily(selffamily):设置字体族。
  • SetPixelSize(selfpixelSize):设置字体的像素尺寸。
  • SetStyle(selfstyle):设置字体样式。
  • SetUnderlined(selfunderlined):设置下划线。
  • SetWeight(selfweight):设置字体权重。

二、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演示

三、本文知识点

  • 掌握和使用wx.Font。

前一篇:实战wxPython:058 - GDI基本元素之画刷Brush

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值