Mac下使用pyqt5编译MacOS、Windows双平台桌面应用

写在前面

公司有个业务需要用到一个更新工具,最后选定用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下效果图:


Mac效果图

Windows效果图

Anaconda可以从这里下载

进入主题

安装Anaconda,一路回车即可。
安装好后打开pycharm,新建一个简单python项目


创建项目

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


安装pyqt库

安装成功后回到项目,打开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_())

运行后效果如下:


test

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


pyqtGUI

这里有三个输入,第一个随便起个名字,第三个填:,第二个就是刚才创建的even虚拟环境的目录,我这里是/Users/kawatakaratakara/.conda/envs/pyqttestdemo/bin/Designer.app

同样的方式配置ui2py工具
这里需要输入4个参数 第一个名称随便起个名字
第二个参数pyuic5路径:/Users/kawatakaratakara/.conda/envs/pyqttestdemo/bin/pyuic5
第三方参数写死: -o .py
第四个参数写死:

配置完成后在项目根目录下右键创建一个pyqtGUI页面

createGUI

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


createWindow

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

createbtui

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

屏幕快照 2021-01-10 下午3.30.53.png

运行完命令后会生成一个同名的.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下的可执行文件,打开可看到一样的效果

屏幕快照 2021-01-10 下午3.41.55.png

windows下打包同样的命令,但是windows会在dist目录下生成main.exe。

简单的就这样。

你可能感兴趣的:(Mac下使用pyqt5编译MacOS、Windows双平台桌面应用)