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

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. 从序列化字符串恢复字体并应用

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

• 加粗、下划线样式

• 自定义字间距

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

程序运行结果如图:

代码运行效果

http://www.xdnf.cn/news/5230.html

相关文章:

  • Linux基本指令(一)
  • HDFS 常用基础命令详解——快速上手分布式文件系统
  • [python] 类
  • AtCoder Beginner Contest 405(CD)
  • 问题及解决01-面板无法随着窗口的放大而放大
  • 互联网大厂Java求职面试:基于RAG的智能问答系统设计与实现-3
  • 游戏引擎学习第270天:生成可行走的点
  • 阿里云CDN的源站配置:权重的详解
  • AI安全之对抗样本攻击---FGSM实战脚本解析
  • C语言_程序的段
  • Lasso回归理论的起源
  • Python教程(四)——数据结构
  • 计算机网络:家庭路由器WiFi信号的发射和手机终端接收信号原理?
  • 智能时代下,水利安全员证如何引领行业变革?
  • python校园新闻发布管理系统
  • 【Debian】关于LubanCat-RK3588s开发板安装Debian的一些事
  • Java 泛型(Generic)
  • 本地大模型工具深度评测:LM Studio vs Ollama,开发者选型指南
  • 每日算法刷题Day1 5.9:leetcode数组3道题,用时1h
  • Paging 3.0 + Kotlin 分页加载指南
  • 用go从零构建写一个RPC(仿gRPC,tRPC)--- 版本2
  • 实验四:网络编程
  • localStorage和sessionStorage
  • Day28 -js开发01 -JS三个实例:文件上传 登录验证 购物商城 ---逻辑漏洞复现 及 判断js的payload思路
  • [Linux网络_71] NAT技术 | 正反代理 | 网络协议总结 | 五种IO模型
  • 好用的播放器推荐
  • 蓝桥杯嵌入式第十一届省赛真题
  • Python企业级OCR实战开发:从基础识别到智能应用
  • 健康养生:开启活力生活的密码
  • JGL066生活垃圾滚筒筛分选机实验装置