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

2023-11-16

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

一、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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实战wxPython:059 - GDI基本元素之字体Font 的相关文章

  • 从框架中获取可调用对象

    给定框架对象 由sys getframe http docs python org library sys html sys getframe 例如 我可以获得底层的可调用对象吗 代码解释 def foo frame sys getfram
  • 将字符串转换为浮点数列表(在 python 中)

    出于数据存储的目的 我尝试从 txt 文件恢复浮点列表 从字符串中可以看出 a 1 3 2 3 4 5 我想恢复 a 1 3 2 3 4 5 我期待一个简单的解决方案 例如list a 但我找不到类似的东西 Use the AST模块 Ex
  • sudo 和 pip 不在同一路径上

    pip and sudo不在我的计算机上的同一路径上 因此当 基本上一直 我需要运行这两个命令时 如下所示 sudo pip install xxx I get sudo pip command not found pip下载软件包 但由于
  • 如何在Python中反转列表的列表? [复制]

    这个问题在这里已经有答案了 我想知道如何反转 python 中的列表列表 例如 原来的 list 1 2 3 4 5 6 7 8 9 输出 new list 7 8 9 4 5 6 1 2 3 现在 我正在尝试这样做 new list re
  • 如何使用 Pycharm 运行 fast-api 服务器?

    我有一个简单的 API 函数 如下所示 from fastapi import FastAPI app FastAPI app get async def read root return Hello World 我正在使用启动服务器uvi
  • 如何检查给定的数字是否是2的幂?

    下面的代码不适用于某些输入 a i set 1 while i lt 10000 a add i i lt lt 1 N int input if N in a print True else print False 我最初的想法是检查每个
  • python win32com.client 调整窗口大小

    我正在使用 Python 3 4 1 通过 win32com client 控制 Windows 应用程序 我可以激活它 我可以发送击键 点击等 现在我想知道是否有办法调整窗口大小并将其设置到特定位置 我找不到方法 这里有一些代码片段 所以
  • Flask 和 Reactjs 抛出 JSX 转换错误

    我已经开始将 ReactJS 与 Python Flask 后端结合使用 通过 Flask 渲染模板时 我在 Chrome 控制台中收到以下客户端错误 错误 找不到模块 jstransform visitors es6 templates
  • Python 模块 BeautifulSoup 提取锚点 href

    我正在使用 BeautifulSoup 模块通过以下方式从 html 选择所有 href def extract links html soup BeautifulSoup html anchors soup findAll a print
  • 私有属性,但却是一个神秘的领域

    我想将属性设为私有 但带有 pydantic 字段 from pydantic import BaseModel Field PrivateAttr validator class A BaseModel a str I want a py
  • 如何在 tkinter 后台运行函数[重复]

    这个问题在这里已经有答案了 我是 GUI 编程新手 我想用 tkinter 编写一个 Python 程序 我想要它做的就是在后台运行一个可以通过 GUI 影响的简单函数 该函数从 0 计数到无穷大 直到按下按钮为止 至少这是我想要它做的 但
  • 使用 Popen 打开进程并获取 PID

    我正在开发一个漂亮的小功能 def startProcess name path Starts a process in the background and writes a PID file returns integer pid Ch
  • 如何在使用 Flask for Python 3 的同时使用 Bootstrap 4?

    我检查过 发现默认安装时 Flask Bootstrap 原生使用 Bootstrap 3 3 7 但实际上我想通过使用 Flask Bootstrap 包在我的项目中使用 Bootstrap 4 任何有关如何更新它或类似内容的帮助将不胜感
  • 在添加数据之前使用 Python gdata 清除工作表中的行

    我有一个 Google 电子表格 我使用 python 脚本和 gdata 库填充值 如果我多次运行脚本 它会将新行附加到工作表中 我希望脚本在填充之前首先清除行中的所有数据 这样每次运行时我都会有一组新的数据脚本 我尝试过使用 Updat
  • 使用张量流导出神经网络的权重

    我使用张量流工具编写了神经网络 一切正常 现在我想导出神经网络的最终权重以制定单一的预测方法 我怎样才能做到这一点 您需要在训练结束时使用以下命令保存模型tf train Saver https www tensorflow org ver
  • python 中“重载”函数的最佳方法? [复制]

    这个问题在这里已经有答案了 我正在尝试在 python 中做这样的事情 def foo x y do something at position x y def foo pos foo pos x pos y 所以我想根据我提供的参数数量调
  • 为什么我的 Python 散点图不起作用?

    我使用 pylab 创建了一个非常简单的散点图 pylab scatter engineSize fuelMile pylab show 该程序的其余部分不值得发布 因为正是该行给我带来了问题 当我将 散点 更改为 绘图 时 它会绘制数据图
  • 无法将 librosa 与 python 3 一起使用

    我已经在 Windows 上的 ubuntu 子系统上使用 pip3 正确安装了 librosa 但是当我尝试执行像这样的简单程序时 import librosa data sr librosa load sound mp3 print d
  • Docker Python 脚本找不到文件

    我已经成功构建了一个 Docker 容器 并将应用程序的文件复制到 Dockerfile 中的容器中 但是 我正在尝试执行引用输入文件 在 Docker 构建期间复制到容器中 的 Python 脚本 我似乎无法弄清楚为什么我的脚本告诉我它无
  • 处理错误“TypeError: Expected tuple, got str”将 CSV 加载到 pandas 多级和多索引 (pandas)

    我正在尝试加载 CSV 文件 这个文件 https drive google com file d 13a eVeSzy6HkhffQw32S57U hm5YCj0 view usp sharing 创建一个多索引多级数据帧 它有5 五 指

随机推荐

  • 全面认识Linux下打包解压压缩命令

    1 前言 最近通过sudo tar czf usr src tgz usr src 这个命令发现我对打包方面的命令一无所知 故正式学习记录下 这个命令动作为 将 usr src 目录下的文件打包压缩为当前路径下的usr src tgz文件
  • Explain详解与索引最佳实践

    文章目录 Explain 解释 示范表 使用语句 explain 每一列说明 id select type table type key len ref rows EXTRA 索引最佳实践 Explain 解释 示范表 DROP TABLE
  • VMware虚拟机下的CentOS7网络配置

    一 虚拟机设置 VMware界面最上面 选择虚拟机 gt 设置 将网络连接改为桥接模式 如下图所示 二 查看主机DNS地址 win R 输入cmd 启动命令行界面 输入ipconfig all 查看主机DNS服务器地址 如下图所示 三 修改
  • 基于ARM-contexA9蜂鸣器驱动开发

    上次 我们写了一个LED的驱动程序 这一节 我们只需稍微改动一下就可以实现蜂鸣器的驱动 让我们来看看吧 还是跟之前一样 先找电路图 找到电路板上对应的引脚和相关联的寄存器 1 看电路图 1 蜂鸣器接口位于电路板的底板 看电路图可知道是高电平
  • Servlet与Jsp之间有哪些数据传输的方式?

    前言 根据MVC架构大家都很清楚 servlet充当咱们mvc中的c 也就是controller 而jsp则是咱们的view 所以呀 根据它们各自的职责划分 servlet相当于是一个指挥官 将页面数据交给业务逻辑层去处理 处理后的数据也就
  • 斗破苍穹算法版—萧炎的成长之路(一)

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 前端炫酷代码分享 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架构咱们从0说 数据流通的精妙之道 文章目录 前言 主
  • 什么是CA数字证书,CA证书有什么作用?

    CA证书 也是根证书 是最顶级的证书 也是CA认证中心与用户建立信任关系的基础 用户的数字证书必须有一个受信任的根证书 用户的数字证书才是有效的 那么 CA数字证书是干嘛用的 有什么作用呢 通过下文来详细了解下 所谓CA认证中心 它是采用P
  • Latex模板elsevier爱思唯尔KBS投稿步骤

    1 注册账号 我投的是KBS Elsevier旗下的应该都差不多 2 选择文章类型 我选的 full length article 3 Attach Files 必填项可以去搜一下 都有模板 Elsevier作者指南都有超链接 可以直接看例
  • python手写光线追踪(不使用图形学API)——第二期

    本文未经允许禁止转载 B站 https space bilibili com 455965619 作者 Heskey0 赫斯基皇 二 specular材质和glass材质 在这个案例中 总共有4种材质 none specular glass
  • 并发编程基础和原理

    1 了解多线程的意义和使用 1 1 什么是进程 什么是线程 进程 是一个正在执行中的程序 每一个进程执行都有一个执行顺序 该顺序是一个执行路径 或者叫一个控制单元 我们打开电脑上的qq时 点击qq exe 电脑就会运行一个qq的程序 这个程
  • 【ML on Kubernetes】第 2 章:理解 MLOps

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 【目标检测】38、PAA

    文章目录 一 背景 二 方法 2 1 Probabilistic Anchor Assignment Algorithm 2 2 IoU prediction as Localization Quality 2 3 Score Voting
  • ctfshow 网络迷踪-哐啷哐啷+鲶鱼之谜

    12 哐啷哐啷 通过谷歌识图找到这张图片出自的文章 得到这是这是新疆和田 ctfshow 和田 13 鲶鱼之谜 这题在群里有wp我就不写了各位可以参考一下群文件 最终flag ctfshow ca1524 1837
  • 运行jupyter notebook 时报“kernel error“ ,以及如何切换python解释器

    运行jupyter notebook 时报 kernel error 以及如何切换python解释器 一般出现 kernel error 时 多半是因为系统中存在较多的python解释器 1 查看内核 假定读者已通过pip 安装了 jupy
  • uni-app微信小程序-利用canvas给图片添加水印

    实现思路 一 选择图片 二 将图片绘制到 canvas 中并绘制水印 三 将 canvas 画布转换为图片地址 四 最终效果 五 完整代码 实现思路 选择图片 将图片绘制到 canvas 中并绘制水印 将添加水印的图片绘制到 canvas
  • 2023最新的Java八股文合集来了,彻底解决一线大厂面试难题

    纵观今年的技术招聘市场 Java 依旧是当仁不让的霸主 即便遭受 Go 等新兴语言不断冲击 依旧岿然不动 究其原因 Java 有着极其成熟的生态 这个不用我多说 Java 在 运维 可观测性 可监 控性方面都有着非常优秀的表现 Java 也
  • python学习笔记---错误、调试和测试【廖雪峰】

    错误 调试和测试 三类错误 有的错误是程序编写有问题造成的 比如本来应该输出整数结果输出了字符串 这种错误我们通常称之为bug bug是必须修复的 有的错误是用户输入造成的 比如让用户输入email地址 结果得到一个空字符串 这种错误可以通
  • android ApplicationInfo类

    1 获取apk文件的图标 java view plain copy print public static Drawable getApkFileIcon String apkPath Context context PackageMana
  • ACM--田忌赛马--贪心--HDOJ 1052--Tian Ji -- The Horse Racing

    HDOJ题目地址 传送门 Tian Ji The Horse Racing Time Limit 2000 1000 MS Java Others Memory Limit 65536 32768 K Java Others Total S
  • 实战wxPython:059 - GDI基本元素之字体Font

    字体是决定文本外观的对象 字体用于将文本绘制到设备上下文 并设置窗口文本的外观 一 wx Font简介 创建自定义字体最简单的方法是使用wx FontInfo对象指定字体属性 然后使用wx Font构造函数来创建 wx Font的构造函数形