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() 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. 基础属性设置

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

运行效果包含:

• 不同字体族和字号

• 加粗、下划线样式

• 自定义字间距

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

程序运行结果如图:

相关推荐
JavaEdge在掘金1 分钟前
告别 "Bean Not Found"!轻松搞定 Spring Boot 包扫描难题 ✅
python
zhanshuo4 分钟前
减少Python字符串和列表操作的代码依赖
python
北京_宏哥5 分钟前
🔥Python零基础从入门到精通详细教程2-变量与常量
前端·python·面试
这里有鱼汤11 分钟前
如何把MCP和DeepSeek大模型融合,让AI了解实时股票行情
后端·python·trae
databook15 分钟前
机器学习中的"食材挑选术":特征选择方法
python·机器学习·scikit-learn
MarkHard12331 分钟前
JavaSE知识总结 ~个人笔记以及不断思考~持续更新
java·开发语言·笔记
丰锋ff37 分钟前
英一真题阅读单词笔记 07年
笔记
愚润求学1 小时前
【Linux】线程控制
linux·运维·开发语言·c++·笔记
Code_流苏1 小时前
Python趣学篇:交互式词云生成器(jieba + Tkinter + WordCloud等)
python·pillow·matplotlib·tkinter·wordcloud·jieba分词·词云生成器
CApp1 小时前
GODOT引擎学习日志
学习·游戏引擎·godot