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

文章目录

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

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

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

一、QFont常用方法

方法名称 参数 返回值 说明
init 无 - 创建默认字体(继承应用默认设置)
init QFont - 复制构造函数
init family:str, pointSize:int=-1, weight:int=-1, italic:bool=False - 通过属性构造字体
bold() 无 bool 判断是否粗体
capitalization() 无 QFont.Capitalization 获取大写样式
defaultFamily() 无 str 获取当前样式提示的默认字体族
families() 无 Liststr 获取所有请求的字体族
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. 基础属性设置

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

2. 高级样式控制

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

3. 序列化与反序列化

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

4. 字体信息获取

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

三、应用实例

python 复制代码
import sys
from PySide6.QtWidgets import QApplication, QLabel, QWidget, QVBoxLayout
from PySide6.QtGui import QFont

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

运行效果包含:

• 不同字体族和字号

• 加粗、下划线样式

• 自定义字间距

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

程序运行结果如图:

相关推荐
yuyuxun129 分钟前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计
如夏倾城1 小时前
百度文心(容易被忽略的好用AI)使用方式
人工智能·python·百度·语言模型·dubbo
用户019027581611 小时前
quotes 实时价和 klines 最新收盘价为什么对不上?
python
少司府2 小时前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
打工仔折腾 AI3 小时前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化
火云代理3 小时前
Python 使用代理 IP 前,先弄清 Requests 的配置来源与验证方法
网络·python·网络协议·tcp/ip·ip
YLCHUP4 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
LGL6030A4 小时前
Java学习历程31——初识Spring Boot
java·spring boot·学习
2601_967979124 小时前
Python第七十四讲 异常处理完全精通 try-except零基础保姆级教程
python·异常处理·编程教程·错误处理·try-except
wuyk5555 小时前
Spider-第07讲-JSON接口与正则提取
爬虫·python·json