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: ...
随机推荐
- Spring各种类型数据的注入
直接上代码: 一个MessageBean类 package com.henu.spring; import java.util.*; public class MessageBean { privat ...
- sklearn—支持向量机
SVC介绍: 拟合出来的模型为一个超平面 解决与样本维数无关,适合做文本分类 解决小样本.非线性.高维 是用于分类.回归.孤立点检测的监督学习方法的集合. 优点: 有效的高维空间 维数大于样本数的时候 ...
- Python locals() 的陷阱
转载自https://segmentfault.com/a/1190000012724861 在工作中, 有时候会遇到一种情况: 动态地进行变量赋值, 不管是局部变量还是全局变量, 在我们绞尽脑汁的时 ...
- 构造Map并对其排序
#构造Map并对其排序 attr_tul = ['a','b','c','d','e','f'] one_tul = [,,,,,] one_dic = {} for i in range(len(a ...
- flask及扩展源码解读
先放几篇文章 http://www.jianshu.com/p/adbea1783e2b http://blog.csdn.net/github_39605023/article/details/76 ...
- ubuntu 16.04 配置ssl
Let's Encrypt 的服务相信很多人都知道了,我个人认为这是最好的免费 SSL 服务.下面内容即使如何在自己的网站上使用 Let's Encrypt 实现 SSL. 前提条件 自己拥有一个域名 ...
- 使用JS区分客户端
之前遇到,上司这样一个指示. 他说:“你看,能不能帮我解决一下,ipad自带的,键盘问题.” 就是我们做的这个项目,是一个 web项目,然后 要求 电脑端 和 平板都可以访问.在日期输入框的地方.他们 ...
- 深入理解java:2. 多线程机制
引言 很多人都对其中的一些概念不够明确,如同步.并发等等,让我们先理清一些概念,以免产生误会. 多线程:指的是这个程序(一个进程)运行时,产生了不止一个线程. 并行与并发: 并行:多个cpu实例或者多 ...
- 如何上传大文件到github上
真的是被百度坑怕了,只适合我自己的 如果你之前安装git成功的话,右键会出现两个新选项,分别为Git Gui Here,Git Bash Here,这里我们选择Git Bash Here,进入如下界面 ...
- Springboot2.x集成单节点Redis
Springboot2.x集成单节点Redis 说明 在Springboot 1.x版本中,默认使用Jedis客户端来操作Redis,而在Springboot 2.x 版本中,默认使用Lettuce客 ...