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: ...
随机推荐
- Linux添加用户到sudoers组
切换用户至rootvim /etc/sudoers 找到root ALL=(ALL) ALL,在下方新增 stack ALL=(ALL) NOPASSWD: ALL w ...
- install_github无法安装 Rwebdriver包的解决方法
1.通过install_githtb安装Rwebdriver包的错误如下: 提示不能打开URL,但是将URL地址输入浏览器地址栏,则可以下载包到本地 2.在网上搜索,发现可以通过本地文件来安装(ins ...
- jquery.fileupload-image-editor.js
jquery.fileupload-image-editor.js中 _initEventHandlers: function () { this._super(); var handlers = { ...
- 算法中Amortised time的理解
ref:http://stackoverflow.com/questions/200384/constant-amortized-time 如果非要翻译成中文,我觉得摊算时间或均摊时间(注意,它和平均 ...
- python - assert 断言 语句
使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单. 用法:在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行时崩溃,不如在出现 ...
- WCF 配置说明
关于WCF中的地址和绑定,需要补充一下. WCF中支持的传输协议包括HTTP.TCP.Peer network(对等网).IPC(基于命名管道的内部进程通信)以及MSMQ(微软消息队列),每个协议对应 ...
- 测开之路一百二十七:flask之构造response对象
可以使用flask.make_response构造自定义响应信息 构造一个响应信息为文本,状态码为404 响应 响应数据为json,状态码为200 返回html # coding:utf-8from ...
- 【BW系列】SAP BW实时抽取ECC数据的实现
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BW系列]SAP BW实时抽取ECC数据的实现 ...
- cocos2dx基础篇(8) 开关按钮CCControlSwitch
[3.x] (1)去掉 “CC” (2)对象类 CCObject 改为 Ref (3)标签类 LabelTTF 改为 Label (4)CCControlEvent 改为强枚举 Control::Ev ...
- lua正则表达式替换字符串
local _t = {} _t.name = "Li" local str = string.gsub("hahah---[name]----[age]--xrz-&q ...