上两篇文章实现了根据输入歌手名爬取这个歌手的所有歌词,并生成可视化词云;但是这些脚本运行只能在python环境下运行,不具有通用性,所以就想使用Python的GUI编程解决方案之一PyQt5,实现交互页面,然后再打成exe文件,这样就可以在Windows上运行了。
1.PyQt5介绍
PyQt5是基于Digia公司强大的图形程式框架Qt5的python接口,由一组python模块构成。PyQt5本身拥有超过620个类和6000函数及方法。在可以运行于多个平台,包括:Unix, Windows, and Mac OS。
PyQt5的类存在与如下模块当中:
QtCore模块涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及到的 time、文件、目录、数据类型、文本流、链接、mime、线程或进程等对象。
QtGui模块涵盖多种基本图形功能的类; 包括但不限于:窗口集、事件处理、2D图形、基本的图像和界面 和字体文本。
QtWidgets模块包含了一整套UI元素组件,用于建立符合系统风格的classic界面,非常方便,可以在安装时选择是否使用此功能。
QtMultimedia模块包含了一套类库,该类库被用于处理多媒体事件,通过调用API接口访问摄像头、语音设备、收发消息(radio functionality)等。
QtBluetooth模块包含了处理蓝牙活动的类库,它的功能包括:扫描设备、连接、交互等行为。
QtNetwork模块包含用于网络编程的类库,这组类程序通过提供便捷的TCP/IP 及 UDP 的 c/s 程式码集合,使得基于Qt的网络编程更容易。
QtPositioning模块用于获取位置信息,此模块允许使用多种方式达成定位,包括但不限于:卫星、无线网、文字信息。此应用一般用于网络地图定位系统。
Enginio模块用于构建客户端的应用程式库,用于在运行时访问 Qt Cloud 服务器托管的应用程序。
QtWebSockets模块包含了一组类程序,用以实现websocket协议。
QtWebKit包含了用于实现基于webkit2的网络浏览器的类库。
QtWebKitWidgets模块包含用于基于WebKit1的Web浏览器实现的类,用于基于QtWidgets的应用程序
QtXml模块包含了用于处理XML的类库,此模块为SAX和DOM API 的实现提供了方法。
QtSvg模块通过一组类,为显示矢量图形文件的内容提供了方法。
QtSql模块提供了数据库对象的接口以供使用
QtTest模块包含了可以通过单元测试,以调试PyQt5应用程式的功能。
在PyQt5中编写UI界面可以直接通过代码来实现,也可以通过Qt Designer来完成。Qt Designer的设计符合MVC的架构,其实现了视图和逻辑的分离,从而实现了开发的便捷。Qt Designer中的操作方式十分灵活,其通过拖拽的方式放置控件可以随时查看控件效果。Qt Designer生成的.ui文件(实质上是XML格式的文件)也可以通过pyuic5工具转换成.py文件。
2.安装PyQt5
方法一:
使用pip命令安装
pip install PyQt5
pip install pyqt5-tools
方法二:
在Pycharm中安装
如图所示,搜索PyQt5和pyqt5-tools在点击 Install Package即可。
3.配置Qt Designer
Qt Designer随PyQt5-tools包一起安装,其安装路径在 “Python安装路径\Lib\site-packages\pyqt5-tools”下。
若要启动Qt Designer可以直接到上述目录下,双击designer.exe打开Qt Designer;或在PyCharm中将其配置为外部工具打开。
1). 在Pycharm中配置Qt Designer方法如下:
Settings -> Tools -> External Tools -> + ->选择Program
Program: D:\Studyspace\Python\reptile\venv\Scripts\pyqt5designer.exe
Arguments: $FileDir$\$FileName$
Working directory: $FileDir$
2).再次点击+添加 .ui 文件转换工具
Program: D:\Studyspace\Python\reptile\venv\Scripts\pyuic5.exe
Arguments: $FileName$ -o $FileNameWithoutExtension$.py
Working directory: $FileDir$
3).再次点击+添加 .qrc 文件转换工具
Program: D:\Studyspace\Python\reptile\venv\Scripts\pyrcc5.exe
Arguments: $FileName$ -o $FileNameWithoutExtension$_rc.py
Working directory: $FileDir$
3.运行QtDesigner
在Pycharm中点击 Tools 然后 External Tools 的 PyQtDesigner 等待一会就运行起来了
4.创建页面布局
一般直接选择 Main Window 就行,再点击Create即可
创建了布局以后,在左侧栏把需要的组件拖动到画布上即可,然后在右侧可以调这个组件的相关参数
然后点击保存,会把 .ui 文件给保存到项目目录下
点击helloword.ui右键然后选择External Tools 再选择 pyuic5
会在同级目录下生成一个helloworld.py文件
5.运行创建的文件
编写代码调用创建的GUI文件
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from helloworld import *
class MyWindow(QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
self.setupUi(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
myWin = MyWindow()
myWin.show()
sys.exit(app.exec_())
6.总结
通过上面的一系列操作,配置了Qt Designer和转换工具,了解了Qt Designer的设计界面,先在画布上设计页面,然后再根据保存的 .ui 文件转换为 .py 文件 运行后即可呈现出在画布上设计的样子。
Qt Designer对视图和业务逻辑进行了分离,在优化更改的时候只需要在设计上进行更改,然后再转换成 .py 文件即可。也可以在转换后的 .py 文件中进行微调。
这样就大大简化了我们的开发负担,提升了工作效率。棒棒哒~