1.3 PyQt5
1.3.1 PyQt5简介
Python语言功能很强,但是Python自带的GUI开发库Tkinter功能很弱,难以开发出专业的GUI。好在Python语言的开放性,很容易将其他语言(特别是C/C++)的类库封装为Python绑定,而Qt是非常优秀的C++ GUI类库,所以就有了PyQt。
PyQt是Qt C++类库的Python绑定,PyQt5对应于Qt5类库。Qt推出新的版本后,PyQt就会推出跟进的版本,例如针对Qt 5.12.0就有PyQt 5.12。使用PyQt5可以充分利用Qt的应用程序开发框架和功能丰富的类设计GUI程序。PyQt主要有以下一些优点。
· PyQt将Qt的跨平台应用框架与Python的跨平台解释语言结合在了一起。
· Qt使用信号与槽(Signals/Slots)机制进行对象之间的通信,它是类型安全且弱耦合的,易于创建可重用的软件模块。
· 使用Qt Creator中的UI Designer或独立的Qt Designer可以可视化地设计窗体,然后将窗体转换为Python程序,可以大大提高界面设计的效率。
· PyQt将Qt和Python的优点结合到了一起,程序员可以利用Qt丰富的UI设计功能,但不需要使用复杂的C++语言,而是使用Python语言编程。
PyQt5是Riverbank公司的产品,分为开源版本和商业版本,开源版本就包含全部的功能。Riverbank公司不仅开发了PyQt5,还开发了PyQtChart、PyQtDataVisualization、PyQt3D、SIP等软件包。可以在Riverbank公司网站上下载这些软件包的源代码,在PyPI网站上也可以找到这些软件包,所以可以使用pip3指令直接安装。
1.3.2 PyQt5安装
在PyPI网站上可以找到最新版本的PyQt5,直接用下面的指令安装PyQt5。
pip3 install PyQt5
直接连接PyPI服务器可能速度比较慢,可以使用镜像网站安装,例如使用清华大学镜像网站的指令是:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple PyQt5
这条指令正确执行后就会安装PyQt5,并且会自动安装依赖的包SIP。SIP是一个将C/C++库转换为Python绑定的工具,SIP本来是为了开发PyQt而开发的,现在也可以用于将任何C/C++库转换为Python绑定。
安装PyQt5之后,在“D:\Python37\Scripts”目录下增加了pylupdate5.exe、pyrcc5.exe和pyuic5.exe这3个用于PyQt5的可执行程序,如图1-9所示。这3个可执行程序的作用分别如下。
图1-9 安装PyQt5之后的Scripts子目录下的可执行文件
· pyuic5.exe是用于将Qt Designer(或Qt Creator内置的UI Designer)可视化设计的界面文件(.ui文件)编译转换为Python程序文件的工具软件,是使用PyQt5设计GUI程序最常用到的工具软件。
· pyrcc5.exe是用于将Qt Creator里设计的资源文件(.qrc文件)编译转换为Python程序文件的工具软件,资源文件一般存储了图标、图片等UI设计资源。
· pylupdate5.exe是用于多语言界面设计时编辑语言资源文件的工具软件。
路径“D:\Python37\Scripts”被添加到了Windows的PATH环境变量里,所以这些程序在cmd窗口里可以直接运行。
若想要卸载PyQt5,就执行下面的指令:
pip3 uninstall PyQt5
1.3.3 在IDLE中开启对PyQt5的代码提示功能
在安装了PyQt5之后,可以在IDLE中开启代码提示功能,并且添加PyQt5的所有模块,这样在编写程序时,IDLE就具有一定的代码提示功能。
首先编辑目录“D:\Python37\Lib\idlelib”下的文件config-extensions.def,修改[AutoComplete]部分:
[AutoComplete] enable=True popupwait= 20
这表示开启自动提示功能,提示开启的延迟时间是20毫秒。
然后再编辑同一目录下的文件autocomplete.py,在文件的import部分导入PyQt5的各个模块:
import os import string import sys ##添加需要自动提示的模块 import PyQt5.QtWidgets import PyQt5.QtCore import PyQt5.QtGui import PyQt5.QtSql import PyQt5.QtMultimedia import PyQt5.QtMultimediaWidgets import PyQt5.QtChart import PyQt5.QtDataVisualization
这样就将PyQt5的各个常用模块以及第12章和第13章要单独安装的PyQtChart和PyQtDataVisualization加入了可提示模块列表。
开启和设置自动提示功能后,在IDLE中使用PyQt5各模块中的类时就会有代码提示功能。但是IDLE的代码提示功能比较弱,不如PyCharm、Eric等专业IDE软件。