GUI学习之二十五——QFontDialog学习总结
今天学习字体对话框——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学习总结的更多相关文章
- python3.4学习笔记(二十五) Python 调用mysql redis实例代码
python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...
- 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧
目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...
- javaweb学习总结(二十五)——jsp简单标签开发(一)
一.简单标签(SimpleTag) 由于传统标签使用三个标签接口来完成不同的功能,显得过于繁琐,不利于标签技术的推广, SUN公司为降低标签技术的学习难度,在JSP 2.0中定义了一个更为简单.便于编 ...
- javaweb学习总结二十五(response对象的用法一)
一:Reponse对象的概念 当客户端发送http请求时,服务器端会对每一次请求,创建request对象和response对象. response对象包括三个部分:响应头.响应状态码以及响应体 二:r ...
- GUI学习之二十九—QFileDialog学习总结
今天学习的是文件对话框——QFileDialog 一.描述 QFileDialog提供了一个对话框,允许用户选择文件或者目录,也允许用户遍历文件系统,用以选择一个或多个文件或者目录. QFileDia ...
- GUI学习之二十四——QDialog学习总结
今天学习对话框输入控件的基类(QDialog). 一.描述 是对话类窗口(字体框.颜色选择.文件选择框等)的基类. 对话框窗口是顶级窗口(就是说不包含于哪个父类的显示界面里),主要用于短期任务和与用户 ...
- Java基础学习笔记二十五 MySQL
MySQL 在dos中操作mysql 连接mysql命令: mysql -uroot -p密码 ,连接OK,会出现mysql> 对数据库的操作 创建一个库 create database 库名 ...
- Python学习(二十五)—— Python连接MySql数据库
转载自http://www.cnblogs.com/liwenzhou/p/8032238.html 一.Python3连接MySQL PyMySQL 是在 Python3.x 版本中用于连接 MyS ...
- Python学习札记(二十五) 函数式编程6 匿名函数
参考:匿名函数 NOTE 1.Python对匿名函数提供了有限的支持. eg. #!/usr/bin/env python3 def main(): lis = list(map(lambda x: ...
随机推荐
- Android NDK下载
http://dl.google.com/android/ndk/android-ndk-r10d-linux-x86_64.bin https://dl.google.com/android/rep ...
- GTX 1060 3GB 能否使用DeepFaceLab ?
大部分人都知道跑换脸软件对电脑配置的要求比较高.所以当你想要开始玩之前都会有一个疑问:我的电脑能跑起来了么?或者我的电脑能跑那个模型? 之前写过一篇750 1G显卡如何玩deepfakes的文章.今天 ...
- 【ASK】设置网卡启动遇到的事!
上次动笔是16年的事情了,一晃3年过去了.算了,不感慨了.直奔主题吧. 1.今天朋友要把一批win10的机器设置成网卡启动. 2.网卡是intel集成的. 3.按照主板说明已经设置成功. 4.通过wi ...
- Stream介绍
一.Stream介绍 现在有这样的需求:有个菜单list,菜单里面非常多的食物列表,只选取小于400卡路里的并且按照卡路里排序,然后只想知道对应的食物名字. 代码: package com.cy.ja ...
- lambda表达式使用解析
1.Predicate/Consumer/Function/Supplier介绍 Predicate boolean test(T t); Consumer accpet(T t); Function ...
- Native SQL的使用
OPEN SQL也不是万能的,存在一定的局限性.例如后台数据库为Oracle,对数据表中某个字段大小写是不固定的,若以这个字段为查旬条件,一般Oracle处理方法是使用Upper /Lower函数据将 ...
- 理解ES6中的Iterator
一.为什么使用Iterator 我们知道,在ES6中新增了很多的特性,包括Map,Set等新的数据结构,算上数组和对象已经有四种数据集合了,就像数组可以使用forEach,对象可以使用for...in ...
- text获取元素的文本
1断言 代码 # -*-coding:utf-8-*-from selenium import webdriverimport time as tdriver = webdriver.Chrome() ...
- 机器学习实战-Logistics回归
Logistics回归:实战,有两个特征X0,X1.100个样本,进行Logistics回归 1.导入数据 def load_data_set(): """ 加载数据集 ...
- vue使用笔记二
es6\es2015特性http://lib.csdn.net/article/reactnative/58021?knId=1405 使用express-generator初始化你的项目目录http ...