QFontDialog 字体选择对话框
QFontDialog(parent: QWidget = None) # 创建对象的同时设置父对象
QFontDialog(QFont, parent: QWidget = None) # 创建对象的同时通过QFont对象设置默认字体格式并设置父对象
setFontFamily(family_str) # 设置字体家族
fontFamily() # 获取设置的字体
setFontWeight(int) # 设置字体粗细(通过下面枚举)
QFont.Thin # 细小
QFont.ExtraLight # 稍微加粗
QFont.Light
QFont.Normal # 标准的
QFont.Medium # 中等
QFont.DemiBold # 半粗体
QFont.Bold # 粗体
QFont.ExtraBold # 特粗体
QFont.Black # 黑体
fontWeight() # 获取字体粗细
setFontItalic(bool) # 设置字体是否倾斜
fontItalic() # 获取字体是否倾斜
setFontPointSize(float) # 设置字体尺寸
fontPointSize() # 获取字体尺寸
setFontUnderline(bool) # 设置字体是否加下划线
fontUnderline() # 获取字体是否加下划线
setCurrentFont(QFont) # 通过QFont对象统一设置字体格式
currentFont() -> QFont # 获取设置的字体格式QFont对象
# QFont对象里面有很多方法可以设置字体格式,也可以通过字体格式选择框获取QFont对象
# 小技巧:弹出字体格式选择框
QFontDialog.getFont() # 查看可用的字体
# 返回一个QFont对象和选择结果<确定:True,取消:False>的元组
# (, True)
# (, False)
show()
open(self)
open(PYQT_SLOT) # 打开后, 会自动连接fontSelected信号与此处指定的槽函数PYQT_SLOT
# 选择字体后,点击确定按钮会执行指定的槽函数PYQT_SLOT,点击取消则不执行
exec() -> int # 返回是否点击确定
setCurrentFont(QFont) # 设置当前选中字体
currentFont() -> QFont # 获取当前选中字体
selectedFont() -> QFont # 获取最终选择的字体
setOption(QFontDialog.FontDialogOption, on=True)
# 参数:on:设置前面的参数是否有效
on = True # 设置该选项
on = False # 取消该选项
setOptions(QFontDialog.FontDialogOption) # 设置多个选项,用按位或("|")进行连接
testOption(QFontDialog.FontDialogOption) # 测试某个选项是否生效
options() -> QFontDialog.FontDialogOption # 获取当前的选项
# 补充
QFontDialog.FontDialogOption
QFontDialog.NoButtons # 不显示“ 确定”和“ 取消”按钮。(对“实时对话框”有用。)
QFontDialog.DontUseNativeDialog # 在Mac上使用Qt的标准字体对话框而不是Apple的原生字体面板。
QFontDialog.ScalableFonts # 显示可缩放字体
QFontDialog.NonScalableFonts # 显示不可缩放的字体
QFontDialog.MonospacedFonts # 显示等宽字体
QFontDialog.ProportionalFonts # 显示比例字体
QFontDialog.getFont(parent: QWidget = None) -> Tuple[QFont, bool]
QFontDialog.getFont(QFont, parent: QWidget = None, caption: str = '', options: QFontDialog.FontDialogOption) -> Tuple[QFont, bool]
# 参数
QFont: 默认字体
parent. 父控件
caption. 对话框标题
options. 选项,同上
# 返回值
返回一个元组(QFont, bool) —— (最终选择的字体, 是否点击确定)
currentFontChanged(QFont) # 当前字体发生改变时
fontSelected(QFont) # 最终选择字体时
from PyQt5.Qt import *
import sys
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QFontDialog-功能作用')
self.resize(500, 500)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
# ****************构造函数****************** 开始
# 方法一
fontd = QFontDialog(self)
# 方法二
font = QFont()
font.setFamily('微软雅黑')
# fontd = QFontDialog(font,self)
# ****************构造函数****************** 结束
pass
# ****************弹出窗口****************** 开始
# def font_selct():
# print('选择了字体')
# fontd.open(font_selct)
# fontd.open()
# fontd.show()
# fontd.exec()
# ****************弹出窗口****************** 结束
pass
# ****************设置当前字体****************** 开始
# fontd.setCurrentFont(font) # 设置当前字体
#
# f = fontd.currentFont() # 获取当前字体
# ****************设置当前字体****************** 结束
pass
# ****************最终选择的字体****************** 开始
# labe = QLabel(self)
# labe.setText("我爱学Python")
# labe.move(100,100)
#
# def font_select():
# fontd.open()
#
# btn = QPushButton('字体选择', self)
# btn.move(10, 10)
# btn.clicked.connect(font_select)
#
# def labe_setfont():
# labe.setFont(fontd.selectedFont())
# labe.adjustSize()
#
# fontd.fontSelected.connect(labe_setfont)
# ****************最终选择的字体****************** 结束
pass
# ****************选项控制****************** 开始
# QFontDialog.NoButtons # 不显示“ 确定”和“ 取消”按钮。(对“实时对话框”有用。)
# QFontDialog.DontUseNativeDialog # 在Mac上使用Qt的标准字体对话框而不是Apple的原生字体面板。
# QFontDialog.ScalableFonts # 显示可缩放字体
# QFontDialog.NonScalableFonts # 显示不可缩放的字体
# QFontDialog.MonospacedFonts # 显示等宽字体
# QFontDialog.ProportionalFonts # 显示比例字体
# # 设置对话框选项
# fontd.setOption(QFontDialog.NoButtons,on=True)
# # fontd.setOptions(QFontDialog.NoButtons | QFontDialog.ScalableFonts)
# fontd.open()
# # 获取设置的选项是否生效
# print(fontd.testOption(QFontDialog.NoButtons))
# # 获取当前的选项
# print(fontd.options())
# ****************选项控制****************** 结束
pass
# ****************静态方法打开对话框****************** 开始
btn = QPushButton('选择字体',self)
btn.move(10,10)
labe = QLabel('我爱学Python', self)
labe.move(0, 100)
def open_font():
# 使用静态方法一打开字体选择对话框
# result = fontd.getFont()
# 使用静态方法二打开字体选择对话框
result= fontd.getFont(font,self,'请选择字体')
if result[1]:
labe.setFont(result[0])
labe.adjustSize()
btn.clicked.connect(open_font)
# ****************静态方法打开对话框****************** 结束
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())
from PyQt5.Qt import *
import sys
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QFontDialog-可用信号')
self.resize(500, 500)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
fontd = QFontDialog(self)
btn = QPushButton('选择字体',self)
btn.move(10,10)
labe = QLabel('我爱学Python', self)
labe.move(10, 100)
labe1 = QLabel('我爱学Java', self)
labe1.move(10, 200)
btn.clicked.connect(lambda:fontd.open())
def current_font(f):
labe.setFont(f)
labe.adjustSize()
def select_font(f):
labe1.setFont(f)
labe1.adjustSize()
# 当前字体发生改变时发射信号
fontd.currentFontChanged.connect(current_font)
# 最终选择字体时发射信号
fontd.fontSelected.connect(select_font)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Windows()
window.show()
sys.exit(app.exec_())