Python PyQt5整理介绍


Posted in Python onApril 01, 2020

PyQt5 是Digia的一套Qt5应用框架与python的结合,同时支持2.x和3.x,官方网站:www.riverbankcomputing.co.uk/news。

PyQt5是由一系列Python模块组成。超过620个类,6000函数和方法。能在诸如Unix、Windows和Mac OS等主流操作系统上运行。PyQt5有两种证书,GPL和商业证书。

PyQt5类分为很多模块,主要模块有:

  • QtCore 包含了核心的非GUI的功能。主要和时间、文件与文件夹、各种数据、流、URLs、mime类文件、进程与线程一起使用。
  • QtGui 包含了窗口系统、事件处理、2D图像、基本绘画、字体和文字类。
  • QtWidgets
  • QtMultimedia
  • QtBluetooth
  • QtNetwork
  • QtPositioning
  • Enginio
  • QtWebSockets
  • QtWebKit
  • QtWebKitWidgets
  • QtXml
  • QtSvg
  • QtSql
  • QtTest

正文开始

好了,我们开一个新章节,因为我对Gui设计比其它的熟一点,所以我先来开个Gui设计的新坑。在这里说明一下。我们使用的是PyQt5,并不是Python自带的Tkinter。那个我没那么熟,可以说基本不会。这个栏目我们主要是讲PyQt5的基础,至于更多,我觉得大家自己摸索,毕竟难了,我也累,写多了看不懂。好了,栏目介绍完,现在开始说正式的。

首先因为PyQt5是第三方库,如果你直接import,那么就会报错。必须下载,至于怎么下载Python的第三方库,我在基础栏目中的Python库已经说过。大家自行翻阅。(还是说一个简单一点的吧。。。)

在命令提示符/cmd中(Windows系统,Linux和苹果系统抱歉我没用过,请谅解。)

pip install PyQt5

很简单吧,如果报错了,你会看到一大堆红字,如果末尾是…time out,那么就是中断了,多试几次。其它的自行搜索吧,毕竟太多了。我觉得最好还是下载.whl文件。

废话了这么多,我们先来看一个我最近无聊编的实用工具,界面很简陋,毕竟我大概只编了几个小时不到。

import sys,sip
from PyQt5.QtWidgets import QApplication, QWidget,QLabel,QPushButton,QCheckBox, QComboBox,QLineEdit
from PyQt5.QtGui import QFont
from PyQt5.QtCore import Qt

class Exchange_of_weather_degree_units(QWidget):

 def __init__(self):
  super().__init__()
  self.setting()

 def setting(self):
  self.unit = None

  self.choice = QComboBox(self)
  self.choice.addItem('℃')
  self.choice.addItem('?')
  self.choice.activated[str].connect(self.choice_)
  self.choice.move(50,15)

  self.number = QLineEdit(self)
  self.number.setPlaceholderText('输入转化的数值')
  self.number.move(15,50)

  self.arrowhead = QLabel(self)
  self.arrowhead.setText('——————>')
  self.arrowhead.setFont(QFont('microsoft Yahei', 20))
  self.arrowhead.move(165,20)

  self.result = QLabel(self)
  self.result.setText('       ')
  self.result.setFont(QFont('microsoft Yahei', 15))
  self.result.move(370, 27.5)

  self.yes = QPushButton('确定',self)
  self.yes.clicked.connect(self.yes_)
  self.yes.move(220,50)

  self.setGeometry(300, 100, 520, 100)
  self.setWindowTitle('摄氏度与华氏度的转换')
  self.show()

 def choice_(self,text):
  self.unit = text

 def yes_(self):
  try:
   if self.unit == '℃':
    result_ = eval(self.number.text()) * 1.8 + 32
    self.result.setText(str(result_) + '?')

   if self.unit == '?':
    result_ = round((eval(self.number.text()) - 32) / 1.8,6)
    self.result.setText(str(result_) + '℃')

   else:
    result_ = eval(self.number.text()) * 1.8 + 32
    self.result.setText(str(result_) + '℃')
  except:
   self.result.setText('请输入数字')
if __name__ == '__main__':
 app = QApplication(sys.argv)
 Ex = Exchange_of_weather_degree_units()
 sys.exit(app.exec_())

这个是华氏度与摄氏度的一个转换小工具,对我来说挺实用。大家不用懂,就复制过去看看效果就好了。

其实这个里面涉及的知识并不多,所以大家不用怕。因为最基础的PyQt5框架是这样的:

import sys
from PyQt5.QtWidgets import QApplication, QWidget
class Example(QWidget):

 def __init__(self):
  super().__init__()
  self.settings()
 def settings(self):
  self.setGeometry(300, 300, 450, 350)
  self.show()

if __name__ == '__main__':
 app = QApplication(sys.argv)
 ex = Example()
 sys.exit(app.exec_())

当然,这只是我觉得的最简模式,其实可以比这更精简。不过长度也差不多这样。所以大家不用害怕。

至于Qt5是什么,大家自行搜索,反正我可以告诉大家,这是一个极为强大与成熟的库,Qt本身其实也是一个工具。如果要,可以加我QQ。

讲了这些,我们现在来分析一下这个框架代码:

sys库是一个标准库:

sys库的作用:查看python解释器信息及传递信息给python解释器。
sys.argv:获取命令行参数列表,第一个元素是程序本身
sys.exit(n):退出Python程序,exit(0)表示正常退出。当参数非0时,会引发一个SystemExit异常,可以在程序中捕获该异常
sys.version:获取Python解释程器的版本信息
sys.maxsize:最大的Int值,64位平台是2**63 - 1
sys.path:返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform:返回操作系统平台名称
sys.stdin:输入相关
sys.stdout:输出相关
sys.stderr:错误相关
sys.exc_info():返回异常信息三元元组
sys.getdefaultencoding():获取系统当前编码,默认为utf-8
sys.setdefaultencoding():设置系统的默认编码
sys.getfilesystemencoding():获取文件系统使用编码方式,默认是utf-8
sys.modules #以字典的形式返回所有当前Python环境中已经导入的模块
sys.builtin_module_names:返回一个列表,包含所有已经编译到Python解释器里的模块的名字
sys.copyright:当前Python的版权信息
sys.flags:命令行标识状态信息列表。只读。
sys.getrefcount(object):返回对象的引用数量
sys.getrecursionlimit():返回Python最大递归深度,默认1000
sys.getsizeof(object[, default]):返回对象的大小
sys.getswitchinterval():返回线程切换时间间隔,默认0.005秒
sys.setswitchinterval(interval):设置线程切换的时间间隔,单位秒
sys.getwindowsversion():返回当前windwos系统的版本信息
sys.hash_info:返回Python默认的哈希方法的参数
sys.implementation:当前正在运行的Python解释器的具体实现,比如CPython
sys.thread_info:当前线程信息

这些是有一些是我参考的,不过主要是查看PyQt5库本身代码,再翻译解释英文的成果。

然后是解包,这个没问题吧。

然后创建Example库,继承了QWidget。
PyQt5有很多模块,其中QWidget就是一个模块,它包含了一系列创建桌面应用的UI元素。

下面的初始化代码应该没问题吧。
然后就是这个self.setGeometry(300, 300, 450, 350),这个是设置窗口与屏幕左上角的距离与长宽。
这个大家改改数据就懂了。

然后是self.show(),这个是将界面显示出来。
最后是运行,if那一个判断简单来说是这样的:
别的文档调用你的这个库时不会执行if里的代码。
然后app那一行大家就是所有的PyQt5应用必须创建一个应用(Application)对象。sys.argv参数是一个来自命令行的参数列表。Python脚本可以在shell中运行。这是我们用来控制我们应用启动的一种方法。

ex是调用库,然后首先执行__init__的代码,然后__init__又调用了settings,所以直接执行initUI里的程序。最后退出。

我们再改好看一点。

import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
class Example(QWidget):
 def __init__(self):
  super().__init__()
  self.settings()
  
 def setting(self):
  self.setWindowTitle(sys.argv[0])
  #self.setWindowIcon(QIcon('图片名.ico')) 自己加图片
  self.setGeometry(300, 300, 450, 350)
  self.show()

if __name__ == '__main__':
 app = QApplication(sys.argv)
 ex = Example()
 sys.exit(app.exec_())

我们加了两行,在settings中的第一行,就是设置标题。第二行大家自行加ico图片,这样就会更丰富了。这个方法我就不列出来了,大家自己记住就好。

总结

到此这篇关于Python PyQt5整理介绍的文章就介绍到这了,更多相关Python PyQt5介绍内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python lambda和Python def区别分析
Nov 30 Python
VSCode下好用的Python插件及配置
Apr 06 Python
python实现剪切功能
Jan 23 Python
OpenCV 轮廓检测的实现方法
Jul 03 Python
Django将默认的SQLite更换为MySQL的实现
Nov 18 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
Mar 12 Python
详解Python中pyautogui库的最全使用方法
Apr 01 Python
在Mac中配置Python虚拟环境过程解析
Jun 22 Python
keras实现VGG16方式(预测一张图片)
Jul 07 Python
python实现猜拳游戏项目
Nov 30 Python
Python结合百度语音识别实现实时翻译软件的实现
Jan 18 Python
python爬虫请求库httpx和parsel解析库的使用测评
May 10 Python
django之导入并执行自定义的函数模块图解
Apr 01 #Python
在脚本中单独使用django的ORM模型详解
Apr 01 #Python
Python视频编辑库MoviePy的使用
Apr 01 #Python
python json.dumps中文乱码问题解决
Apr 01 #Python
Django Admin后台添加数据库视图过程解析
Apr 01 #Python
pyqt5中动画的使用详解
Apr 01 #Python
django项目中新增app的2种实现方法
Apr 01 #Python
You might like
php Ubb代码编辑器函数代码
2012/07/05 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
javascript 函数参数限制说明
2010/11/19 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
jQuery中find()方法用法实例
2015/01/07 Javascript
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
AngularJS中ng-class用法实例分析
2017/07/06 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
layui操作列按钮个数和文字颜色的判断实例
2019/09/11 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
python刷投票的脚本实现代码
2014/11/08 Python
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
python Tkinter版学生管理系统
2019/02/20 Python
Python 使用folium绘制leaflet地图的实现方法
2019/07/05 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
2019/08/23 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
如何将json数据转换为python数据
2020/09/04 Python
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
大学应届毕业生个人求职信
2013/09/23 职场文书
给实习单位的感谢信
2014/02/01 职场文书
考试作弊检讨书大全
2014/02/18 职场文书
学生会主席竞聘书
2014/03/31 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
个人求职自荐信范文
2014/06/20 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
企业安全生产规章制度
2015/08/06 职场文书
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers
MySQL导致索引失效的几种情况
2022/06/25 MySQL