字体对话框QFontDialog
字体对话框 QFontDialog 用于选择字体,其界面是 PySide6 已经编辑好的,用户可以直接在对话框中选择与字体有关的选项。字体对话框的界面如图所示
用QFontDialog 类创建标准字体对话框的方法如下,其中 QFont 用于始化对话:
from PySide6.QtWidgets import QFontDialog
QFontDialog(initial: Union[PySide6.QtGui.QFont,str,Sequence[str]],parent: Union[PySide6.QtWidgets.QWidget,NoneType]=None)-> None
QFontDialog(parent: Union[PySide6.QtWidgets.QWidget,NoneType]=None)-> None
详细说明
字体对话框是通过一个静态的getFont()函数创建的。
示例:
from PySide6.QtGui import QFont
from PySide6.QtWidgets import QFontDialog
ok = bool()
font = QFontDialog.getFont(QFont("Helvetica [Cronyx]", 10), self)
if ok:
# the user clicked OK and font is set to the font the user selected
else:
# the user canceled the dialog; font is set to the initial
# value, in this case Helvetica [Cronyx], 10
该对话框还可以用于直接设置小部件的字体:
myWidget.setFont(QFontDialog.getFont(0,myWidget.font()))
如果用户单击"确定",他们选择的字体将用于myWidget,如果他们单击"取消",则使用原始字体。
字体对话框QFontDialog属性
属性 | 描述 | 功能访问 |
---|---|---|
currentFont: PySide6.QtGui.QFont | 此属性保存对话框的当前字体。 | currentFont () setCurrentFont (font) Signal currentFontChanged (font) |
options: FontDialogOptions | 此属性包含影响对话框外观的各种选项。 默认情况下,所有选项都处于禁用状态。 应在显示对话框之前设置选项。在对话框可见时设置它们并不能保证对对话框产生即时效果取决于选项和平台。 | options () setOptions (options) |
字体对话框QFontDialog 的常用方法
字体对话框 QFontDialog 主要方法介如下:
-
创建字体对话框
- 一种方法是先创建对话框实例对象,设置对话框的属性,然后用show()open()或 exec()方法显示对话框
- 另一种法是直接用getFont()方法getFont()方法是静态方法,可直接使用"类名getFont()"方法调用也可用实例对调用
-
setOption(self, option: PySide6.QtWidgets.QFontDialog.FontDialogOption, on: bool = True)方法设置宇体对话框的选项,其中QFontDialog.FontDialogOption 可以取:
也可以用setOptions(self, options: PySide6.QtWidgets.QFontDialog.FontDialogOption)进行设置
PySide6.QtWidgets.QFontDialog.FontDialogOption(继承枚举.标志)此枚举指定影响字体对话框外观的各种选项。例如,它允许指定应显示的字体类型。如果未指定,将列出所有可用字体。请注意,某些平台(例如Mac)可能不支持字体过滤选项。非本机对话框(在Windows或Linux上使用)始终支持它们。
Constant Description QFontDialog.NoButtons 不显示OK和Cancel按钮。(对"实时对话框"很有用。) QFontDialog.DontUseNativeDialog 在Mac上使用Qt的标准字体对话框,而不是Apple的本机字体面板。 QFontDialog.ScalableFonts 显示可缩放字体 QFontDialog.NonScalableFonts 显示不可缩放字体 QFontDialog.MonospacedFonts 显示等宽字体 QFontDialog.ProportionalFonts 显示比宇体 -
用selectedFont()方法可以获取在单击 OK 按后,最终选中的字体。在对话中单击 OK 按钮时,同时也发送信号 fontSelected(QFont),其中参数 QFont 是最后中的宇体。
-
setCurrentFont(QFont)方法可以设置对话框显示时,初始选中的字体。在对话框中选择不同的字体时,会发送 currentFontChanged(QFont信号,其中参数QFont 是当前选中的字体。
-
getFont(initial: QFont,widget=None,title=“”,QFontDialog.FontDialogOption)方法可以用模式方式显示对话框,获取字体,其中参数:
- initial是初始化字体
- title是对话框标题,返回值是元组 Tuple[bool,QFont]。
如在对话中单击 OK按钮,bool为True,单击 Cancel按钮,bool为 False,返回的字体是初始化字体。如果用getFont(widget=None)方法不能设置初始字体,则单击 Cancel按钮后返回的是默认字体。
字体对话框 QFontDialog 的常用方法如表所示:
QFoniDialog的方法及参数类型 | 返回值的类型 | 说 明 |
---|---|---|
selectedFont() | QFont | 返回用户通过单击"确定"或等效按钮选择的字体。 |
open(receiver:QObject,member:str) | 打开对话框并将其fontSelected()信号连接到接收器和成员指定的插槽。 当对话框关闭时,信号将从插槽断开。 | |
setCurrentFont(QFont) | None | 将QFontDialog中高亮显示的字体设置为给定的字体。 |
currentFont() | QFont | 获取字体对话框中当前的字体 |
options()->QFontDialog.FontDialogOption | 属性选项的Getter。 | |
setOption(option: PySide6.QtWidgets.QFontDialog.FontDialogOption, on: bool = True) | None | 如果启用为true,则设置要启用的给定选项;否则,清除给定选项。 |
setOptions(options: PySide6.QtWidgets.QFontDialog.FontDialogOption) | 设置options属性 | |
testOption(QFontDialog.FontDialogOption) | bool | 测试是否设置了属性,如果启用了给定选项,则返回true; 否则返回false。 |
[static]getFont(initial:QFont[,parent:QWidget=None[,title:str=“”[,options:FontDialogOptions=QFontDialog.FontDialogOptions()]]]) | Tuple[bool,QFont] | 执行模式字体对话框并返回字体。 如果用户单击"确定",则返回所选字体。如果用户单击"取消",则返回初始字体。 对话框由给定的父级和options中指定的选项构造。标题显示为对话框的窗口标题,初始值为最初选择的字体。如果ok参数not-null,则在用户单击OK时将其引用的值设置为true,在用户单击Cancel时将其引用的值设置为false。 ok = bool() font = QFontDialog.getFont(ok,QFont(“Times”,12),self) if ok: # font is set to the font the user selected else: # the user canceled the dialog; font is set to the initial # value,in this case Times,12. 该对话框还可以用于直接设置小部件的字体: myWidget.setFont(QFontDialog.getFont(0,myWidget.font())) 在本例中,如果用户单击"确定",将使用他们选择的字体,如果单击"取消",则使用原始字体。 |
[static]getFont(widget: QWidget=None) | Tuple[bool,QFont] | 用模式方式显示对话框,获取字体,参数 initial是初始化字体,title 是对话框标题,返回值是元组 Tuple[bool,QFont] 这是一个重载函数。 执行模式字体对话框并返回字体。 如果用户单击"确定",则返回选定的字体。如果用户单击"取消",则返回Qt默认字体。 该对话框是使用给定的父对象构建的。如果ok参数不为null,则如果用户单击"确定",则其引用的值将设置为true,如果用户单击取消,则其所引用的值设置为false。 ok = bool() font = QFontDialog.getFont(ok,self) if ok: # font is set to the font the user selected else: # the user canceled the dialog; font is set to the default # application font,QApplication::font() 在执行对话框期间不要删除父项。如果您想这样做,您应该使用其中一个QFontDialog构造函数自己创建对话框。 |
字体对话框 QFontDialog 的信号
信号 | 描述 |
---|---|
currentFontChanged(font:PySide6.QtGui.QFont) | 当当前字体发生变化时,会发出此信号。新字体是在字体中指定的。 该信号是在用户选择字体时发出的。最终,选择的字体可能与当前选择的字体不同。 属性currentFont的通知信号。 |
fontSelected(font) | 当当前字体发生变化时,会发出此信号。新字体是在字体中指定的,参数是最选择的字体。。 该信号是在用户选择字体时发出的。最终,选择的字体可能与当前选择的字体不同。 属性currentFont的通知信号。 |
QFontDialog例子
# -*- coding: UTF-8 -*-
# File date: Hi_2023/3/14 23:14
# File_name: 04-QFontDialog 例子.py
"""
QFontDialog 控件是一个常用的字体选择对话框,可以让用户选择所显示文本的字号、样式和格式。
使用QFontDialog 的函数getFont(),可以从字体选择对话框中选择显示文本的字号、样式和格式。
这个案例的代码非常简单,先通过getFont()函数获取字体,然后通过QLabelL.setfont()函数设置字体,如下所示:
还可以通过QWidget.setFont()设置窗口字体
"""
import sys
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *
class FontDialogDemo(QWidget):
def __init__(self,parent=None):
super(FontDialogDemo,self).__init__(parent)
layout = QVBoxLayout()
self.fontLabel = QLabel("Hello,我来显示字体效果")
layout.addWidget(self.fontLabel)
self.fontButton1 = QPushButton("设置QLabel字体")
self.fontButton1.clicked.connect(self.set_label_font)
layout.addWidget(self.fontButton1)
self.fontButton2 = QPushButton("设置Qwidget字体")
self.fontButton2.clicked.connect(lambda: self.setFont(QFontDialog.getFont(self.font(),self)[1]))
layout.addWidget(self.fontButton2)
self.setLayout(layout)
self.setWindowTitle("Font Dialog 例子")
# self.setFont(QFontDialog.getFont(self.font(),self)[1])
def set_label_font(self):
ok,font = QFontDialog.getFont()
if ok:
self.fontLabel.setFont(font)
if __name__ =='__main__':
app = QApplication(sys.argv)
demo = FontDialogDemo()
demo.show()
sys.exit(app.exec())