Python PyQt5整理介绍
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介绍内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!
- Greenplum 简单性能测试与分析
- CentOS6 安装couchdb2 集群
- 如何遍历维数和各维上限未定的多维数组
- 求长度的另一种方法(""+obj).Length
- ASP.NET MVC的客户端验证:jQuery验证在Model验证中的实现
- GreenPlum 简单性能测试与分析(续)
- 最终版 Reflector v1.0 (+简单的反流程混淆)
- 性能&分布式&NewLife.XCode对无限数据的支持
- ASP.NET MVC下的异步Action的定义和执行原理
- 包学会之浅入浅出Vue.js:结业篇
- 迈克尔•戴尔:人工智能杀手?技术反乌托邦?不存在的
- 你知道吗?多个类多线程环境下静态构造函数的执行顺序
- 云端架构师养成之三:微信也在用的消息队列服务
- 现在 tensorflow和mxnet 很火,是否还有必要学习 scikit-learn 等框架?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- [已解决]报错:XGBoostError: XGBoost Library (libxgboost.dylib) could not be loaded.
- 2.3 spring5源码---spring ioc 加载配置类的源码
- Tree Shaking概念详解
- Canvas基础教程(章节1)
- Canvas基础教程(章节2)
- CSS文件夹
- Canvas基础教程(章节3)
- 口算训练 HDU - 6287
- Codeforces Round #674 (Div. 3) A ~ F 详细讲解
- C# 生成chart图表的三种方式
- C# Task.Run调用外部参数
- Git全方位指南,即用即查就可
- Python入门教程笔记(二)控制语句
- Python入门教程笔记(一)简介、变量及基本数据类型
- C#知识点讲解之C#delegate、event、Action、EventHandler的使用和区别