PySide6 GUI 学习笔记——常用类及控件使用方法(常用类字体QFont)
文章目录
- 一、QFont常用方法
- 二、常用方法总结
- 1. 基础属性设置
- 2. 高级样式控制
- 3. 序列化与反序列化
- 4. 字体信息获取
- 三、应用实例
字体类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. 基础属性设置
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())
该示例创建了一个显示不同字体样式的窗口:
- 第一个标签使用Times New Roman 14pt常规字体
- 第二个标签使用Consolas 16pt加粗带下划线,字间距扩大50%
- 展示字体序列化字符串
- 从序列化字符串恢复字体并应用
运行效果包含:
• 不同字体族和字号
• 加粗、下划线样式
• 自定义字间距
• 字体设置的序列化/反序列化功能
程序运行结果如图: