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之集成开发环境(IDE)
Sep 12 Python
Python中DJANGO简单测试实例
May 11 Python
python 远程统计文件代码分享
May 14 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
python基于paramiko将文件上传到服务器代码实现
Jul 08 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
Jul 22 Python
Python迭代器iterator生成器generator使用解析
Oct 24 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
Oct 30 Python
django 数据库 get_or_create函数返回值是tuple的问题
May 15 Python
python实现猜单词游戏
May 22 Python
PyQt5实现画布小程序
May 30 Python
Windows 平台做 Python 开发的最佳组合(推荐)
Jul 27 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 5.0对象模型深度探索之对象复制
2008/03/27 PHP
php学习之 循环结构实现代码
2011/06/09 PHP
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
PHP设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
PHP图片等比例缩放生成缩略图函数分享
2014/06/10 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
php服务器的系统详解
2019/10/12 PHP
JavaScript 三种创建对象的方法
2009/10/16 Javascript
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
firebug的一个有趣现象介绍
2011/11/30 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
AngularJS基础 ng-csp 指令详解
2016/08/01 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
详解vue-cli 脚手架项目-package.json
2017/07/04 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
[02:53]DOTA2亚洲邀请赛 NewBee战队巡礼
2015/02/03 DOTA
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
Python 提取dict转换为xml/json/table并输出的实现代码
2016/08/28 Python
使用django-crontab实现定时任务的示例
2018/02/26 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
pycham查看程序执行的时间方法
2018/11/29 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
一套C++笔试题面试题
2012/06/06 面试题
营销人才自我鉴定范文
2013/12/25 职场文书
十佳青年个人事迹材料
2014/01/28 职场文书
最新会计专业求职信范文
2014/01/28 职场文书
小学敬老月活动方案
2014/02/11 职场文书
销售顾问工作计划书
2014/08/15 职场文书
学习考察心得体会
2014/09/04 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
自信主题班会
2015/08/14 职场文书