赞
踩
通过本文章,可以掌握以下内容:
1、Pyside6 字体介绍
在开发桌面程序时,尽量保持字体统一风格,保持最佳展示效果。
字体
Pyside6有他自己字体实现机制,主要通过QFont、QFontInfo、QFontMetrics、QFontMetricsF设置字体效果,但比使用html字体样式复杂的多,需要通过这些类的接口来查询和设置字体各种属性,最后由操作系统来渲染。字体匹配算法过程如下:
QFont类是用来处理字体的主要方式,可以指定字体的各种属性,如字体家族、大小、加粗、斜体等。Font不仅用于文本的显示,还可以用于图形界面中文本的绘制。代码示例如下:
- from PySide6.QtGui import QFont
- # 创建一个QFont对象
- font = QFont()
- # 设置字体家族
- font.setFamily("Arial")
- # 设置字体大小
- font.setPointSize(10)
- # 设置字体加粗
- font.setBold(True)
- # 设置字体斜体
- font.setItalic(False)
QFontInfo类在Qt中用于提供关于字体的详细信息。使用QFont对象设置了字体后,可能需要获取这个字体的一些实际使用的属性,比如实际的字体家族、字体大小、是否加粗等。运行示例:
- from PySide6.QtGui import QFont, QFontInfo
- font = QFont("Arial", 10)
- fontInfo = QFontInfo(font)
创建了QFontInfo对象后,可以使用它来获取字体的各种信息:
QFontMetrics类在PySide6中用于提供关于字体的度量信息,如字体的高度、宽度、行距等。这些信息对于在图形用户界面(GUI)中进行精确的文本布局非常重要。QFontMetrics对象是基于QFont对象创建的,它反映了字体在特定设备上的渲染方式。示例代码如下:
- from PySide6.QtGui import QFont, QFontMetrics
- font = QFont("Arial", 10)
- metrics = QFontMetrics(font)
常用方法:
QFontMetricsF类在PySide6中提供了一种方式来获取关于字体的度量信息,与QFontMetrics类似,但它提供了浮点数精度的度量值。这使得QFontMetricsF在需要高精度布局时特别有用,比如在绘图应用或者需要精确控制文本布局的场景中。QFontMetricsF对象是基于QFont对象创建的。需要先有一个QFont对象,然后使用这个QFont对象来创建一个QFontMetricsF对象,代码示例如下:
- from PySide6.QtGui import QFont, QFontMetricsF
- font = QFont("Arial", 10)
- metricsF = QFontMetricsF(font)
常用方法:
在PySide6(和整个Qt框架)中,每个窗口小部件(Widget)都有一个自带的字体,这个字体是从其父窗口小部件继承而来的,最终追溯到应用程序的全局字体设置。QFont对象则是用来描述字体的各种属性的,比如字体家族(如Arial、Courier等)、大小、加粗、斜体等。当创建一个窗口小部件时,它会自动使用当前Qt应用程序的默认字体设置。如果没有特别指定一个字体,那么它就会使用这个默认字体。可以通过修改小部件的QFont来改变其显示文本的字体样式。这实际上是通过调用小部件的setFont()方法并传递一个QFont对象来实现的。这里的关系是:QFont是一个工具,用于定义字体的具体样式;而小部件的字体属性,则是实际应用这些样式的地方。通过改变小部件的QFont,可以控制其文本显示的具体外观。
以下是修改全局字体样式示例代码:
QFont和部件自带字体对比
QSS提供了一种类似于CSS的方式来设置应用程序的样式,包括字体。这种方法更加灵活,可以在不修改Python代码的情况下调整样式。示例代码:
- from PySide6.QtWidgets import QApplication, QLabel
- if __name__ == '__main__':
- app = QApplication([])
- # 创建标签
- label = QLabel("Hello, PySide6 with QSS!")
- # 使用QSS设置字体样式
- label.setStyleSheet("""
- QLabel {
- font-family: Arial;
- font-size: 10pt;
- font-weight: bold;
- }
- """)
- label.setMinimumSize(400,300)
- label.show()
- app.exec()
选择使用QFont还是QSS:
2、字体一些常用技巧
保持主标题、标题、小标题、正文、正文(小),辅助文字,部件字体大小统一,会让界面开重点突出,整洁,清晰
层级 | 字体大小 |
辅助文字 | 12px Extra Small |
正文(小) | 13px Small |
正文 | 14px Base |
小标题 | 16px Medium |
标题 | 18px large |
主标题 | 20px Extra large |
Qfont方法 | Qsss样式 | 作用 |
StyleHint | font-family | 提供了关于字体外观的一般提示,如是否是衬线、无衬线等 |
StyleStrategy | font-smooth | 用于控制字体选择和渲染的更细节策略,如是否允许位图字体或强制抗锯齿 |
HintingPreference | 无 | 控制字体微调的偏好设置 |
Weight | font-weight | 指定字体的粗细 |
Style | font-style | 指定字体的风格,如正常、斜体或倾斜 |
Stretch | font-stretch | 指定字体的拉伸程度 |
Capitalization | text-transform | 控制文本的大小写转换 |
SpacingType | letter-spacing和line-height | 用于控制字间距和行间距 |
StyleHint是QFont类中的一个枚举,用于指导字体匹配算法选择合适的默认字体家族,当指定的字体家族不可用时。这些样式提示帮助Qt选择一个视觉上接近用户需求的字体
枚举值 | 描述 |
QFont.AnyStyle | 不指定特定风格,让Qt选择最合适的字体 |
QFont.SansSerif | 无衬线字体,这种字体的笔画具有相同的粗细,看起来更加简洁和现代。常用于用户界面和屏幕阅读 |
QFont.Helvetica | 指定Helvetica字体或其类似物。Helvetica是一种广泛使用的无衬线字体 |
QFont.Serif | 衬线字体,这种字体在字母的笔画开始和结束的地方有额外的装饰,常用于打印文档和长篇阅读 |
QFont.Times | 指定Times Roman字体或其类似物。Times Roman是一种经典的衬线字体 |
QFont.TypeWriter | 指定等宽(打字机式)字体,每个字符占据相同的水平空间,常用于代码编辑器和文档 |
QFont.Courier | 指定Courier字体或其类似物。Courier是一种常见的等宽字体 |
QFont.OldEnglish | 指定老英式字体,这种字体模仿了中世纪手稿的书写风格,常用于装饰和特殊场合 |
QFont.Decorative | 装饰性字体,用于特殊效果和装饰用途,不建议用于正文文本 |
QFont.Monospace | 等宽字体,每个字符占据相同的水平空间,适用于代码显示和文档,确保对齐 |
QFont.Fantasy | 字体匹配器更倾向于选择映射到CSS通用字体族“fantasy”的字体 |
QFont.Cursive | 字体匹配器更倾向于选择映射到CSS通用字体族“cursive”的字体 |
QFont.System | 系统字体,使用操作系统的默认用户界面字体 |
可以应用于字形的不同级别的微调,以改善在像素密度可能需要时显示器上的可读性
枚举值 | 描述 |
QFont.PreferDefaultHinting | 默认的微调偏好,让系统选择最适合当前字体和大小的微调级别。这通常意味着在大字号下使用较少的微调,在小字号下使用更多的微调来保持字形的清晰度 |
QFont.PreferNoHinting | 指示不使用微调。这可能会导致字体在小尺寸时看起来不够清晰,但可以保持字形的原始比例和形状,对于某些设计或艺术项目来说可能是首选 |
QFont.PreferVerticalHinting | 只使用垂直方向的微调,而不对水平方向进行微调。这种偏好设置可以改善文本的垂直对齐,同时保持字母宽度的自然比例,适用于需要垂直对齐但又不希望字母过于扁平的场景 |
QFont.PreferFullHinting | 指示使用完全微调,即在水平和垂直方向上都进行微调。这通常提供了最佳的文本清晰度和可读性,特别是在小字号下,但可能会稍微改变字形的原始比例 |
Qt使用一个从1到1000的权重刻度,与OpenType兼容。权重为1将是细薄的,而1000将是极黑的
枚举值 | 描述 |
QFont.Thin | 100 |
QFont.ExtraLight | 200 |
QFont.Light | 300 |
QFont.Normal | 400 |
QFont.Medium | 500 |
QFont.DemiBold | 600 |
QFont.Bold | 700 |
QFont.ExtraBold | 800 |
QFont.Black | 900 |
用于显示文本的不同字形风格
枚举值 | 描述 |
QFont.StyleNormal | 默认设置,表示字体以其常规风格显示,没有任何倾斜或斜体效果。这适用于大多数文本内容,提供了清晰且易于阅读的文本外观 |
QFont.StyleItalic | 指定字体以斜体风格显示。斜体通常用于强调文本中的某些单词或短语,或在引用、技术术语和外来语中使用。斜体风格是通过字体本身的斜体版本实现的,具有特定的设计调整,以保持美观和可读性 |
QFont.StyleOblique | 指定字体以倾斜风格显示。倾斜风格类似于斜体,但是通过将常规字体简单地倾斜一定角度来实现,而不是使用专门设计的斜体字形。倾斜风格可能不如真正的斜体风格在视觉上吸引人,但在没有斜体版本的字体中提供了一种替代方案 |
预定义的拉伸值遵循CSS命名约定。值越高,文本拉伸得越多
枚举值 | 描述 |
QFont.AnyStretch | 接受使用其他QFont属性匹配的任何拉伸(在Qt 5.8中添加 |
QFont.UltraCondensed | 50 |
QFont.ExtraCondensed | 62 |
QFont.Condensed | 75 |
QFont.SemiCondensed | 87 |
QFont.Unstretched | 100 |
QFont.SemiExpanded | 112 |
QFont.Expanded | 125 |
QFont.ExtraExpanded | 150 |
QFont.UltraExpanded | 200 |
用于文本的渲染选项
枚举值 | 描述 |
QFont.MixedCase | 默认设置,不对文本的大小写进行任何改变,文本按照原样显示 |
QFont.AllUppercase | 将所有文本转换为大写字母。这个设置可以用于需要强调或统一文本外观的场景 |
QFont.AllLowercase | 将所有文本转换为小写字母。这可以用于某些设计风格,要求文本以全小写字母显示。 |
QFont.SmallCaps | 将所有文本转换为小型大写字母(small caps)。这意味着小写字母会被转换为小号的大写字母形式,通常用于书籍章节标题或其他需要装饰性大写字母的地方。 |
QFont.Capitalize | 将每个单词的首字母大写。这个设置适用于需要标题风格的文本,例如书籍或文章标题。 |
用于控制字间距和行间距
枚举值 | 描述 |
QFont.PercentageSpacing | 使用百分比来指定间距,允许根据字体大小动态调整间距 |
QFont.AbsoluteSpacing | 使用绝对值来指定间距,不随字体大小变化 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。