上篇我们写到了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. Nginx+httpd反代实现动静分离
  2. c语言汇编混编,c语言与汇编混编写法
  3. php基础知识总结大全,php基础知识回顾 —— 常量
  4. 为什么“消费降级”突然火了?数字基尼系数给你一点理论支撑
  5. nginx+web.py+fastcgi(spawn-fcgi)的session失效問題
  6. 王道 —— 进程通信
  7. 搭建MVC及WebAPI项目框架时碰到的问题集合
  8. python 字节码 优化_字节码优化
  9. python 模拟浏览器selenium_Python使用Selenium模块模拟浏览器抓取斗鱼直播间信息示例...
  10. SRC是在本位置显示:source的缩写,源的意思 HREF是点击后连接的目标:HyperlinkReference,超链接引用...
  11. 让chrome浏览器支持ajax跨域
  12. mysql executereader_ExecuteReader的用法
  13. 软件评测师备考详细知识点
  14. 浙大PAT 1058
  15. 有效沟通bic法则_有效沟通的五个法则
  16. 欲说还休,欲说还休,却道天凉好个秋
  17. gmail无法登陆的解决!!
  18. CorelDRAW插件-CPG插件开发-环境搭建-VS2017-TLB文件-CDR插件
  19. LeetCode-剑指Offe-32-1-从上到下打印二叉树
  20. Android手机电池耐用吗,手机电池是否还耐用?一招教你识别

热门文章

  1. 当年发明“熊猫烧香”病毒的天才,如今怎么样了?
  2. Spring MVC实现服务端数据验证 服务端数据校验 Spring Boot 服务端数据校验
  3. 希捷移动硬盘系统提示需要格式化才能用,怎么办
  4. 【避免windows权限问题】nodejs 配置全局 globle 缓存 catch
  5. Docker selenium Python 可靠的selenium Docker环境
  6. echarts2 的引入方式
  7. 景区门票怎么在线上渠道分销?
  8. 日均千万级消息规模,深捷旅使用函数计算释放运维压力
  9. java jdk jre版本要一样吗a_JDK是什么?JRE是什么?JDK和JRE的区别?
  10. 成都互联网公司和生活成本