今天学习字体对话框——QFontDialog()控件。

QFontDialog()是继承自QDialog()的一个子类,用来选择给定的字体(包括字体、字号、样式等)

一.构造函数

QFontDialog()的声明很简单,可以直接调用

fd = QFontDialog()

还有一种方法是可以指定默认字体的(启用后Sample框里会按照指定的字体显示)

font = QFont()
font.setFamily('仿宋')
font.setPointSize(24)
fd = QFontDialog(font,self)

二.对话框的使用

在这里我们借用一个按钮来启动字体对话框,然后获得对话框中选择的字体。

这里有个知识点:我们在打开对话框的时候,用open()是可以传递一个槽函数的

QFontDialog.open(self, slot: PYQT_SLOT)

在对话框打开后,会自动连接fontSelected信号与此处指定的槽函数

方法1:利用open()函数,结合selectFont()函数

from PyQt5.Qt import *
import sys class Window(QWidget):
def __init__(self):
super().__init__()
self.UI_test() def UI_test(self):
btn = QPushButton('选择字体',self)
font = QFont()
font.setFamily('仿宋')
font.setPointSize(24)
fd = QFontDialog(font,self)
self.fd = fd
btn.clicked.connect(lambda :fd.open(self.func))
pass def func(self,*args):
print('字体选择:',self.fd.selectedFont().family()) #获取选择的字体
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())

方案2:利用exec的返回值,结合selectFont()函数

from PyQt5.Qt import *
import sys class Window(QWidget):
def __init__(self):
super().__init__()
self.UI_test() def UI_test(self):
btn = QPushButton('选择字体',self)
fd = QFontDialog(self)
def font_select():
if fd.exec():
print(fd.selectedFont().family()) btn.clicked.connect(font_select)
pass
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())

因为exec是有返回值的,只有点击了OK才返回1,而取消和关闭都是返回0。只有确认选择了才获取字体。

三.选项设置

可以通过代码对按钮等选项进行设置

QFontDialog.setOption(self, option: 'QFontDialog.FontDialogOption', on: bool = ...)
#FontDialogOption枚举值
NoButtons # 不显示确定取消按钮(对实时的对话框有用)
DontUseNativeDialog #在Mac上使用Qt的标准字体而不是Apple的原森字体
ScalableFonts #显示可缩放字体
NonScalableFonts #显示不可缩放字体
MonospacedFonts #显示等宽字体
ProportionalFonts #显示比例字体

我们可以试一下第一个方案,就是在一个实时对话框选择不同字体然后在label里实时改变字体

from PyQt5.Qt import *
import sys class Window(QWidget):
def __init__(self):
super().__init__()
self.resize(800,500)
self.UI_test() def UI_test(self):
label = QLabel('字体',self)
label.move(100,200)
self.label = label
btn = QPushButton('选择字体',self)
font = QFont()
font.setFamily('仿宋')
font.setPointSize(24)
fd = QFontDialog(font,self)
fd.setOption(QFontDialog.NoButtons)
self.fd = fd
btn.clicked.connect(lambda :fd.open(self.func))
pass
fd.currentFontChanged.connect(self.label_font_change)
def func(self,*args):
print('字体选择:',self.fd.selectedFont().family()) #获取选择的字体
def label_font_change(self,font):
self.label.setFont(font)
self.label.adjustSize()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())

实时改变字体

当然,上面的枚举值是可以用管道符‘|’连接同时使用的。

四.静态方法使用

QFontDialog.getFont()     #——>元组

我们先定义一个按钮,按钮连接这样的槽函数

def func(self):
result = QFontDialog.getFont()
print(result)
pass

每次调用槽函数会发现result是一个元组。元组里包含了一个字体对象还有一个布尔量。只有点击确认键布尔量才为真。利用这个方法实现字体的静态调整

from PyQt5.Qt import *
import sys class Window(QWidget):
def __init__(self):
super().__init__()
self.resize(800,500)
self.UI_test() def UI_test(self):
label = QLabel('字体',self)
label.move(100,200)
self.label = label
btn = QPushButton('选择字体',self)
btn.clicked.connect(self.func) def func(self):
result = QFontDialog.getFont()
if result[1]:
self.label.setFont(result[0])
       self.label.adjustSize()
pass if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())

getFont()还有一个高级一些的用法

QFontDialog(Font,parent,'对话框标题',字体过滤器)

五.信号

有两个信号,一个是当前字体发生改变

QFontDialog.currentFontChanged(self, font: QtGui.QFont)

这个是只要选中的字体发生变化就发送信号(一般用在实时对话框中,上文中有案例)

QFontDialog.fontSelected(self, font: QtGui.QFont)

这个则是按下确定键时发送的信号。

GUI学习之二十五——QFontDialog学习总结的更多相关文章

  1. python3.4学习笔记(二十五) Python 调用mysql redis实例代码

    python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...

  2. 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧

    目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...

  3. javaweb学习总结(二十五)——jsp简单标签开发(一)

    一.简单标签(SimpleTag) 由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单.便于编 ...

  4. javaweb学习总结二十五(response对象的用法一)

    一:Reponse对象的概念 当客户端发送http请求时,服务器端会对每一次请求,创建request对象和response对象. response对象包括三个部分:响应头.响应状态码以及响应体 二:r ...

  5. GUI学习之二十九—QFileDialog学习总结

    今天学习的是文件对话框——QFileDialog 一.描述 QFileDialog提供了一个对话框,允许用户选择文件或者目录,也允许用户遍历文件系统,用以选择一个或多个文件或者目录. QFileDia ...

  6. GUI学习之二十四——QDialog学习总结

    今天学习对话框输入控件的基类(QDialog). 一.描述 是对话类窗口(字体框.颜色选择.文件选择框等)的基类. 对话框窗口是顶级窗口(就是说不包含于哪个父类的显示界面里),主要用于短期任务和与用户 ...

  7. Java基础学习笔记二十五 MySQL

    MySQL 在dos中操作mysql 连接mysql命令: mysql -uroot -p密码 ,连接OK,会出现mysql> 对数据库的操作 创建一个库 create database 库名 ...

  8. Python学习(二十五)—— Python连接MySql数据库

    转载自http://www.cnblogs.com/liwenzhou/p/8032238.html 一.Python3连接MySQL PyMySQL 是在 Python3.x 版本中用于连接 MyS ...

  9. Python学习札记(二十五) 函数式编程6 匿名函数

    参考:匿名函数 NOTE 1.Python对匿名函数提供了有限的支持. eg. #!/usr/bin/env python3 def main(): lis = list(map(lambda x: ...

随机推荐

  1. 【HTTP/FTP客户端库】

    [HTTP/FTP客户端库]资料来源:http://curl.haxx.se/libcurl/competitors.html Free Software and Open Source projec ...

  2. leetcode-mid-sorting and searching - 240. Search a 2D Matrix II -NO

    mycode   time limited def searchMatrix(matrix, target): def deal(data): if not data: return False ro ...

  3. leetcode-mid-sorting and searching-75. Sort Colors-NO

    mycode   97.95% class Solution(object): def sortColors(self, nums): """ :type nums: L ...

  4. WPF C# 创建缩略图

    不太精确的方法: public bool ThumbnailCallback() { return false; } private void CreateThumb(int toWidth) { S ...

  5. redis--迁库操作

    如果碰到redis库要迁移(之前的redis用作他用)或者备份用,就需要操作redis迁移 import redis def qianyi(k=None,v=None,name=None): r1 = ...

  6. MYSQL启用数据库错误:ERROR 2002 (HY000)

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) MYSQL服务 ...

  7. RESR API (一)之Requests

    Requests 如果您正在做基于REST的Web服务,您应该忽略request.POST. - Malcom Tredinnick,Django开发团队 REST框架的Request类扩展了标准的H ...

  8. Ehlib好用的版本

    EhLib 6.2

  9. Java ——多线程编程

    本节重点思维导图 多线程编程

  10. adb 性能测试(内存)

    内存测试: 1.使用数据线将手机与电脑连接: 2.手机打开待测APP,即打开进程: 3.打开cmd命令,获取设备列表:输入adb devices; 4.进入该设备的shell环境,输入:adb -s  ...