写在前面
公司有个业务需要用到一个更新工具,最后选定用python+pyqt来实现,中途碰到的坑比较多,在这里做一下记录。网上说的pyqt的教程烂大街的一堆,都是一个平台复制多处。能从头说到尾的太少了。
这里我使用Anaconda装的pyqt环境,因为Mac下使用pip命令安装的pyqt可以正常运行,但是没有pyqt-tool这个工具,安装时各种报错,找不到与我当前安装的pyqt5版本对应的pyqt5-tool。
使用到的版本:pyqt5 5.9.2 python3.7.4(其他版本好像打出来的包无法运行,可自行测试) Anaconda 1.10.0
Mac下效果图:

Anaconda可以从这里下载
进入主题
安装Anaconda,一路回车即可。
安装好后打开pycharm,新建一个简单python项目

打开Anaconda选择刚才创建的even安装pyqt相关库,我这里选择全部安装,根据自己的选择库,点击右下角的apply即可开始安装

安装成功后回到项目,打开main.py,将所有内容替换为下面的代码来显示一个简单的ui界面
import sys
from AnyQt.QtWidgets import QWidget
from PyQt5.QtWidgets import QApplication, QLabel
if __name__ == '__main__':
app = QApplication(sys.argv)
ui = QWidget()
label = QLabel('你好', ui)
label.move(100, 100)
ui.resize(200, 200)
ui.show()
sys.exit(app.exec_())
运行后效果如下:

看到这个表示我们的库基本都安装成功了,现在开始配置pyqt的UI开发工具和ui转py文件的工具,Mac下按下Command+,打开设置页面 ->tools ->External -> 点击+号

这里有三个输入,第一个随便起个名字,第三个填:,第二个就是刚才创建的even虚拟环境的目录,我这里是/Users/kawatakaratakara/.conda/envs/pyqttestdemo/bin/Designer.app
同样的方式配置ui2py工具
这里需要输入4个参数 第一个名称随便起个名字
第二个参数pyuic5路径:/Users/kawatakaratakara/.conda/envs/pyqttestdemo/bin/pyuic5
第三方参数写死: -o
.py
第四个参数写死:
配置完成后在项目根目录下右键创建一个pyqtGUI页面

点击创建一个window,即我们后面用到的UI都会绘制在这个window里,在main函数中只要去new这个window即可

创建两个简单的控件,从左边拖入即可

保存一下刚才创建的这个ui文件,保存到项目根目录下,右键这个ui文件,转换成py文件

运行完命令后会生成一个同名的.py文件,打开这个py文件,复制类名,修改main.py的代码如下:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget
from untitled import Ui_MainWindow
if __name__ == '__main__':
app = QApplication(sys.argv)
window = QMainWindow()
Ui_MainWindow().setupUi(window)
# label = QLabel('你好', ui)
# label.move(100, 100)
# window.resize(200, 200)
window.show()
sys.exit(app.exec_())
运行后可看到与预览图一样的效果。接下来使用pyinstaller进行打包
再打开Anaconda搜索pyinstaller安装,安装好以后回到项目,打开底部的终端(Terminal)输入命令
pyinstaller -F -w main.py
执行完后会在项目根目录下生成一个dist文件夹,文件夹下的main.app即为Mac下的可执行文件,打开可看到一样的效果

windows下打包同样的命令,但是windows会在dist目录下生成main.exe。
简单的就这样。
网友评论