当前位置: 首页 > news >正文

PySide6 GUI 学习笔记——常用类及控件使用方法(常用类字体QFont)

文章目录

  • 一、QFont常用方法
  • 二、常用方法总结
    • 1. 基础属性设置
    • 2. 高级样式控制
    • 3. 序列化与反序列化
    • 4. 字体信息获取
  • 三、应用实例

字体类QFont用于设置界面控件上显示的字体,它包含字体名称字体尺寸粗体字斜体字删除线上划线下划线字体间距等属性。

如果指定的字体在使用时没有对应的字体文件,Qt将自动选择最接近的字体,如果要显示的字符在字体中不存在,则字符会被显示为一个空心方框。

字体类在QtGui模块中,通过from PySide6.QtGui import QFont语句导入。

一、QFont常用方法

方法名称参数返回值说明
init-创建默认字体(继承应用默认设置)
initQFont-复制构造函数
initfamily:str, pointSize:int=-1, weight:int=-1, italic:bool=False-通过属性构造字体
bold()bool判断是否粗体
capitalization()QFont.Capitalization获取大写样式
defaultFamily()str获取当前样式提示的默认字体族
families()List[str]获取所有请求的字体族
family()str获取主字体族
fixedPitch()bool判断等宽字体
fromString(descrip:str)bool从字符串恢复字体设置
isCopyOf(f:QFont)bool判断是否完全拷贝
italic()bool判断斜体
kerning()bool判断是否启用字距调整
overline()bool判断上划线
pixelSize()int获取像素尺寸
pointSize()int获取磅值尺寸
setBold(enable:bool)None设置粗体状态
setCapitalization(caps)None设置大写样式
setFamily(family:str)None设置主字体族
setItalic(b:bool)None设置斜体状态
setPixelSize(pixelSize:int)None设置像素尺寸
setPointSize(pointSize:int)None设置磅值尺寸
setStyle(style:QFont.Style)None设置字体样式
setUnderline(enable:bool)None设置下划线
toString()str序列化为字符串
weight()QFont.Weight获取字重等级

二、常用方法总结

1. 基础属性设置

font = QFont()
font.setFamily("Arial")  # 设置字体族
font.setPointSize(12)    # 设置字号
font.setBold(True)       # 设置粗体
font.setItalic(True)     # 设置斜体

2. 高级样式控制

font.setCapitalization(QFont.AllUppercase)  # 全大写
font.setLetterSpacing(QFont.AbsoluteSpacing, 5)  # 字间距+5px
font.setStyleStrategy(QFont.NoAntialias)    # 禁用抗锯齿

3. 序列化与反序列化

font_str = font.toString()          # 保存为字符串
new_font = QFont()
new_font.fromString(font_str)       # 从字符串恢复

4. 字体信息获取

print(font.family())        # 输出"Arial"
print(font.exactMatch())    # 检查是否存在精确匹配

三、应用实例

import sys
from PySide6.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout
from PySide6.QtGui import QFontclass FontDemo(QWidget):def __init__(self):super().__init__()layout = QVBoxLayout()# 基本字体设置label1 = QLabel("标准字体示例")font1 = QFont("Times New Roman", 14)label1.setFont(font1)# 高级样式label2 = QLabel("高级样式示例")font2 = QFont()font2.setFamily("Consolas")font2.setPointSize(16)font2.setBold(True)font2.setUnderline(True)font2.setLetterSpacing(QFont.PercentageSpacing, 150)  # 字间距150%label2.setFont(font2)# 序列化演示font_str = font2.toString()label3 = QLabel(f"序列化结果:{font_str}")# 反序列化恢复font3 = QFont()font3.fromString(font_str)label4 = QLabel("反序列化恢复的字体")label4.setFont(font3)layout.addWidget(label1)layout.addWidget(label2)layout.addWidget(label3)layout.addWidget(label4)self.setLayout(layout)if __name__ == "__main__":app = QApplication(sys.argv)window = FontDemo()window.resize(400, 200)window.show()sys.exit(app.exec())

该示例创建了一个显示不同字体样式的窗口:

  1. 第一个标签使用Times New Roman 14pt常规字体
  2. 第二个标签使用Consolas 16pt加粗带下划线,字间距扩大50%
  3. 展示字体序列化字符串
  4. 从序列化字符串恢复字体并应用

运行效果包含:
• 不同字体族和字号

• 加粗、下划线样式

• 自定义字间距

• 字体设置的序列化/反序列化功能

程序运行结果如图:

代码运行效果

相关文章:

  • 【图书管理系统】深度讲解:图书列表展示的后端实现、高内聚低耦合的应用、前端代码讲解
  • 神经网络极简入门技术分享
  • 【入门】数字走向I
  • 数字信号处理|| 离散系统的冲激响应和阶跃响应
  • Web3 学习全流程攻略
  • CAD属性图框值与Excel联动(CAD块属性导出Excel、excel更新CAD块属性)——CAD c#二次开发
  • 【AI大模型学习路线】第一阶段之大模型开发基础——第五章(提示工程技术-2)Active-prompt。
  • JavaScript 数组去重:11 种方法对比与实战指南
  • 每天五分钟机器学习:KTT条件
  • QMK自定义4*4键盘固件创建教程:最新架构详解
  • HTTP 的发展史:从前端视角看网络协议的演进
  • Spring 必会之微服务篇(2)
  • Unity Shaders and Effets Cookbook
  • 汽车四缸汽油机曲柄连杆机构设计关键技术研究
  • 测试左移系列-产品经理实战-实战认知1
  • SpringCloud之Gateway基础认识-服务网关
  • 搜索与图论
  • 用java+vert.x开发的内网穿透工具jrp-nat
  • MySQL 从入门到精通(三):日志管理详解 —— 从排错到恢复的核心利器
  • 互联网大厂Java求职面试:AI集成场景下的技术挑战与架构设计
  • 云南省安委会办公室:大理州安全生产形势比较严峻,事故总量一直居高不下
  • 上财发布“AI+课程体系”,人工智能如何赋能财经教育?
  • 心相印回应官方旗舰店客服辱骂消费者:正排查
  • 纽约大学朗格尼医学中心的转型带来哪些启示?
  • 警惕“全网最低价”等宣传,市监总局和中消协发布直播消费提示
  • 洞天寻隐·学林纪丨玉洞桃源:仇英青绿山水画中的洞天与身体