#
# QFontDialog
# 字体对话框
from PyQt5.Qt import *
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('QFontDialog')
self.resize(500,500)
self.iniUI()
def iniUI(self):
btn = QPushButton(self)
self.btn = btn
btn.setText('按钮')
btn.resize(self.width() / 3, self.height() / 10)
btn.move(self.width() / 3, self.height() / 2)
label = QLabel('豫章故郡,洪都新府',self)
self.label = label
##############################################创建字体对话框
#
# 现在需求:
# 在弹出字体对话框之前,设置其字体初始值,包括字体样式,大小
#
# 解决方法:
# 给QFontDialog传递一个QFont()对象
font = QFont()
font.setFamily('华文新魏')
font.setPointSize(30)
fd = QFontDialog(font,self)
self.fd = fd
#############################创建字体对话框
##############################################返回 字体对话框的设置信息
#
# 现在需求:
# 当字体对话框设置好 字体的样式 大小 点击确认键之后,如何获取刚刚设置的字体样式
#
# 解决方法:
# 返回 字体对话框的设置信息
def fdGetInfor(self):
def cao():
print('字体设置完毕,字体样式',self.fd.selectedFont().family(),\
'字体大小',self.fd.selectedFont().pointSize())
self.btn.clicked.connect(lambda:self.fd.open(cao))
#############################返回 字体对话框的设置信息
##############################################设置当前字体对话框 的显示参数
#
# 现在需求:
# 设置字体对话框 的确认取消按钮是否显示
# 字体删选之后显示,如显示可缩放字体,显示等宽字体,比例字体
# 解决方法:
# fd.setOption(QFontDialog.NoButtons)
# fd.setOption(QFontDialog.ScalableFonts)
# fd.setOption(QFontDialog.MonospacedFonts)
# fd.setOption(QFontDialog.ProportionalFonts)
# fd.setOptions(QFontDialog.ProportionalFonts | QFontDialog.NoButtons)
def fdFontChanged(self):
self.fd.show()
self.fd.setOptions(QFontDialog.ProportionalFonts | QFontDialog.NoButtons)
def noButton(font):
self.label.setFont(font)
self.label.adjustSize()
self.fd.currentFontChanged.connect(noButton)
#############################设置当前字体对话框 的显示参数
##############################################快速弹出字体选择对话框
#
# 现在需求:
# 快速弹出字体选择对话框
#
# 解决方法:
# 使用静态方法
def fdGetFont(self):
def font_sel(): #调用静态方法QFontDialog.getFont(self) 可以快速弹出字体选择对话框
result = QFontDialog.getFont(self) #result是包含俩个元素的元组,第一个元组是QFont对象,第二个是布尔类型
if result[1]: #只有字体对话框完成设置并点击确认键关闭后,result[1]为True,
self.label.setFont(result[0]) # 字体对话框点击取消键关闭后,不保存之前任何设置,result[1]为False
self.label.adjustSize()
self.btn.clicked.connect(font_sel)
self.fd.show() #关于这个fdGetFont方法,实际运行时还有一个问题,第一次出不来,第二次设置才能生效
#############################快速弹出字体选择对话框
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
win = MyWindow()
# win.fdGetInfor()
# win.fdFontChanged()
win.fdGetFont()
win.show()
sys.exit(app.exec_())
小白学习笔记,若感兴趣留个爪 haha ^. ^