上篇我们写到了PyQt5标准对话框的使用,这次我们谈谈打开文件对话框、颜色选择对话框以及字体选择对话框。

本期实现的功能效果如下,大家自己看看动画,这里不做过多的描述。

现在放上代码,通过代码讲解,之前已经学习过的知识点,不做讲解。只讲新的,节约大家时间。

#conding=utf-8

from PyQt5.QtWidgets import QWidget, QApplication, QPushButton, QColorDialog, QFontDialog, QTextEdit, QFileDialog

import sys

class Example(QWidget):

def __init__(self):

super().__init__()

self.initUI()

def initUI(self):

self.setGeometry(300, 300, 500, 300)

self.setWindowTitle('关注微信公众号:学点编程吧--记得好看点')

self.tx = QTextEdit(self)

self.tx.setGeometry(20, 20, 300, 270)

self.bt1 = QPushButton('打开文件',self)

self.bt1.move(350,20)

self.bt2 = QPushButton('选择字体',self)

self.bt2.move(350,70)

self.bt3 = QPushButton('选择颜色',self)

self.bt3.move(350,120)

self.bt1.clicked.connect(self.openfile)

self.bt2.clicked.connect(self.choicefont)

self.bt3.clicked.connect(self.choicecolor)

self.show()

def openfile(self):

fname = QFileDialog.getOpenFileName(self, '打开文件','./')

if fname[0]:

with open(fname[0], 'r',encoding='gb18030',errors='ignore') as f:

self.tx.setText(f.read())

def choicefont(self):

font, ok = QFontDialog.getFont()

if ok:

self.tx.setCurrentFont(font)

def choicecolor(self):

col = QColorDialog.getColor()

if col.isValid():

self.tx.setTextColor(col)

if __name__ == '__main__':

app = QApplication(sys.argv)

ex = Example()

sys.exit(app.exec_())

通过上述代码我们了解到主要是涉及QColorDialog, QFontDialog, QTextEdit, QFileDialog这四个类,其中QColorDialog, QFontDialog, QFileDialog分别负责颜色选择对话框、字体选择对话框、打开文件对话框,QTextEdit则是将刚才提到的类的结果用于呈现。QTextEdit能够呈现富文本。

self.bt1.clicked.connect(self.openfile)

self.bt2.clicked.connect(self.choicefont)

self.bt3.clicked.connect(self.choicecolor)

当我们单击不同的按钮的时候,会调用对应的槽函数。例如:bt1调用openfile这个函数(字面意思:打开文件)

fname = QFileDialog.getOpenFileName(self, '打开文件','./')

我们弹出QFileDialog对话框。 getOpenFileName()方法中的第一个字符串是标题。第二个字符串指定对话框工作目录。默认情况下,文件过滤器设置为所有文件(*),即不限制打开文件的类型。

该函数返回值类型是元组。

如果增加文件过滤,可以改成如下语句:

fname = QFileDialog.getOpenFileName(self, '打开文件','./',("Images (*.png *.xpm *.jpg)"))

效果如下:

if fname[0]:

with open(fname[0], 'r',encoding='gb18030',errors='ignore') as f:

self.tx.setText(f.read())

读取所选择的文件名,并将文本编辑小部件的内容设置为文件读取的内容。这里提一下使用with语句来自动帮我们调用close()方法,避免由于文件读写时产生IOError,导致close()不会调用,需要try ... finally来实现的不便。可以参考微信公众号上《Python小知识:浅谈Python的with语句》

font, ok = QFontDialog.getFont()

这里我们弹出字体对话框。 getFont()方法返回字体名称以及用户点击按钮的状态。如果用户点击Ok,则等于True;否则是假的。

if ok:

self.tx.setCurrentFont(font)

如果用户点击ok键,那么我们在文本编辑小部件中选择的内容会使用我们选择的字体。

col = QColorDialog.getColor()

if col.isValid():

self.tx.setTextColor(col)

这段代码的意思和刚才描述的大致相同,弹出颜色选择的对话框。我们检查颜色是否有效。如果我们点击“取消”按钮,则不会返回有效的颜色。 如果颜色有效,那么我们在文本编辑小部件中选择的内容会使用我们选择的颜色。

总结:

本次我们学习了QColorDialog, QFontDialog, QFileDialog这三个对话框。

ok,今天就到这里,我们下期再谈谈其他的对话框,本身对话框内容就比较多,会多分几期讲解。

如果你想要本次教程中的相关源码,请关注微信公众号:学点编程吧,发送pyqt59

,会自动得到相应的百度网盘下载链接。

在实操中遇到问题?欢迎来讨论。学点编程吧-百度贴吧--计算机程序学习的园地!--学点编程吧,让我们的生活更简单,更高效!能用计算机解决的事情,尽量不要让人解决。如果你在学习当中有任何疑问、学习心得、职业发展等内容欢迎在贴吧中分享,让我​tieba.baidu.com

python 文件对话框 颜色对话框_PyQt5系列教程(9):颜色、字体、打开文件对话框...相关推荐

  1. 【建站系列教程】6、.htaccess文件的url重写规则-网页伪静态化

    [建站系列教程]6..htaccess文件的url重写规则-网页伪静态化 如何创建.htaccess文件? .htaccess是什么 htaccess语法教程 写在前面:大家好,我是热爱编程的小泽. ...

  2. 局域网传文件_文件搜索神器Everything使用系列教程之——文件互传篇

    本文接上篇 文件搜索神器Everything使用系列教程之--搜索篇. 众所周知,Everything是一款文件搜索软件,它如何做文件互传呢? 别看Everything小巧,它竟然内置了FTP服务器和 ...

  3. ComicEnhancerPro 系列教程十八:JPG文件长度与质量

    作者:马健 邮箱:stronghorse_mj@hotmail.com 主页:http://www.comicer.com/stronghorse/ 发布:2017.07.23 教程十八:JPG文件长 ...

  4. Tanner L-Edit 系列教程:04 导入GDSII文件

    「 这是Tanner L-Edit系列的第 4 篇 」 文 | 兔二思 文章首发于同名公众号:兔二思(tuersi00) 欢迎大家前往关注! 本节内容 · 导览 导入GDSII命令介绍 导入文件的演示 ...

  5. python亲和性分析_数据挖掘入门系列教程(一)之亲和性分析

    数据挖掘入门系列教程(一)之亲和性分析 教程系列简介 该教程为入门教程,为博主学习数据挖掘的学习路径步骤.教程为入门教程,从最简单的开始.使用的编程语言为Python3.8.1,使用JupyterNo ...

  6. python采集修改原创_python应用系列教程——python中ftp操作:连接、登录、获取目录,重定向、上传下载,删除更改...

    python中ftp操作: ftp=FTP() #设置变量 ftp.set_debuglevel(2) #打开调试级别2,显示详细信息 ftp.connect("IP"," ...

  7. cocos2d x游戏开发系列教程 中国象棋01 工程文件概述

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 上一篇博 ...

  8. fopen是python内置函数吗_Python内置的open函数,打开文件的时候可能会产生异常_学小易找答案...

    [简答题]模仿操作一回. 上传JPG. [单选题]关于唐.宋诗之间的差异,缪钺.钱钟书.启功等学者都曾有过论述,请问以下哪一项评论出自钱钟书的<谈艺录>? [单选题]"羌笛何须怨 ...

  9. python 文件操作 open()与with open() as的区别(打开文件)

    引用文章:open()和with open() as的区别 file = open("test.txt","r") for line in file.readl ...

  10. abaqus dat文件 matlab_工程师联盟科普系列|ABAQUS中的各种文件类型详解-dat文件如何打开...

    ABAQUS产生几类文件:有些是在运行是产生,运行后自动删除:其它一些用于分析.重启.后处理.结果转换或其它软件的文件则被保留,详细如下: 1. model_database_name.cae 模型信 ...

最新文章

  1. Spinner 使用的使用 报错:ArrayAdapter requires the resource ID to be a TextView
  2. Linux上jdk的安装
  3. fetch整个仓库 github_git fetch 的简单用法:更新远程代码到本地仓库
  4. python3.7安装turtle步骤-Python3.6安装turtle模块
  5. EDM营销内容撰写要注意的几个方面
  6. 最新增值税商品税目编码表_大家好!我叫增值税!这是我的最新最全税率表
  7. php事务处理深入学校,php事务处理实例详解
  8. 当我谈 HTTP 时,我谈些什么?
  9. Unity 利用NGUI做屏幕分辨率适配+学习UIDraggablePanel的使用
  10. 用DataGrip生成导出整个库数据的方法
  11. zabbix监控windows服务器简单介绍
  12. 计算机网络与社会需求,计算机网络的技术论文计算机网络与社会需求.doc
  13. 实战 | F1060防火墙透明模式典型组网配置案例(access)
  14. 安装及创建python虚拟环境
  15. 如何完全卸载mysql呢
  16. 人口空间化(三)GWR实现人口空间化
  17. 提升网页加载速度 | google网站速度测试
  18. 使用图形化编程实现灯泡开关设置
  19. 利用freemarker模板引擎进行word导出
  20. wincc实现手机APP远程监控

热门文章

  1. GB2312、BIG5、GBK、GB18030简介
  2. 汉字编码-GB2312-GBK-GB18030-Big5
  3. python爬取大众点评字体_python采集大众点评(字体反爬)
  4. 【弃】Selenium官方文档中文版
  5. 不要错过!第十一届CDA考试Level Ⅰ优秀考生采访
  6. 对线性系统用matlab进行仿真,基于线性系统稳定性分析及MATLAB仿真与应用[1]
  7. VGG16整体框架图
  8. 能当「公务员」、服务员,商用服务机器人今年为啥这么火?
  9. halcon教程之VisionPro软件和Halcon软件 的详细对比
  10. 【印刷技术】印刷油墨的粘度,如何设定?