window配置Python+PyQt5+QtDesigner+PyUic+PyRcc(最全安装教程):https://blog.csdn.net/baidu_35145586/article/details/108110236
MacOS配置Pycharm+Python+PyQt5+QtDesigner+PyUic+PyRcc:
https://blog.csdn.net/lkhk2008/article/details/116019386
QtDesigner工具的使用(界面与业务逻辑分离实现):https://blog.csdn.net/weixin_62094306/article/details/127730280
使用Pyinstaller将Python源代码打包成可执行文件:https://blog.csdn.net/unreliable_narrator/article/details/128465254
作用介绍
- PyQt5:引用该模块来编写python代码,进行UI设计。
- QtDesigner:直接通过Qt语言来进行UI设计的,同时还支持拖拽式的UI设计。
- PyUic:将QtDesigner代码转化成Python代码。
- PyRcc:将图片、数据文件资源打包成py文件。QtDesigner中管理资源文件(图片、数据文件)是通过.qrc文件来管理的。pyQt生成的应用程序,引用图片通常是将资源文件装换为 python 文件,然后引用资源文件,而不能直接加载资源文件。而pyrcc就是将.qrc文件转化成.py文件的。
直接安装anaconda软件(自带常用模块包,包括pyqt5),或者终端指令单独安装PyQt5和PyQt5-tools
PyCharm配置QtDesigner,Pyuic,Pyrcc
- 终端指令安装PyQt5:
pip install PyQt5
- 终端指令安装Qt的工具包:
pip install PyQt5-tools
- 打开PyCharm,File—>Settings—>External Tools 点击加号来添加自己的工具,在pip指令安装完成后会生成designer.exe,pyuic.exe,pyrcc.exe可执行文件,不需要另外安装其他软件。
- 🔰配置QtDesigner:
Name:QtDesigner 【扩展工具名】
Group:External Tools
Program: F:\Python37\Lib\site-packages\qt5_applications\Qt\bin\designer.exe 【扩展工具执行文件路径】
Working directory:$FileDir$ 【扩展工具工作目录为当前python工程的路径】
window系统终端指令where python得Python安装路径。 【F:\Python37\python.exe】
Python安装路径\Lib\site-packages\qt5_applications\Qt\bin 路径下有designer.exe文件,双击文件即可启动QT designer 。
Python安装路径\Scripts 路径下有pyuic5.exe和pyrcc5.exe文件
macos系统终端指令which python3.7得Python安装路径 (因为macos自带有python2,which python指令会返回版本2的位置,所以要指定新装的python版本)。【 /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7】
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/qt5_applications/Qt/bin/ 路径下有Designer.app文件,双击文件即可启动QT designer 。
/Library/Frameworks/Python.framework/Versions/3.7/bin/路径下有pyuic5和pyrcc文件。
macOS转到指定文件夹快捷键:窗口+shift+g。除了Program路径改为macOS的外,其他配置与window一样。
- 🔰配置Pyuic:
Name:Pyuic 【 扩展工具名】
Group:External Tools
Program: F:\Python37\Scripts\pyuic5.exe
Arguments:$FileName$ -o $FileNameWithoutExtension$.py
Working directory:$FileDir$ 【扩展工具工作目录为当前python工程的路径】
或者如下配置
Program:F:\Python37\python.exe 【扩展工具用python3执行文件打开】
Arguments:-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py 【扩展工具为-m后面指定的PyQt5.uic.pyuic,将会指定FileName的ui文件转成指定FileName不带后缀名的py文件。】
- 🔰配置Pyrcc:
扩展工具名 Name:Pyrcc
Group:External Tools
Program: F:\Python37\Scripts\pyrcc5.exe
Arguments:$FileName$ -o $FileNameWithoutExtension$_rc.py
Working directory:$FileDir$ - 点击apply运用后点击ok,在工具栏Tools—>External Tools可以看到新增加的QtDesigner,Pyuic,Pyrcc
将ui文件转py文件
三种方法,可以使用指令,也可以配置Pyuic到pycharm方便使用。
- 终端指令:
python -m PyQt5.uic.pyuic Img_ui.ui -o Img_ui.py
- 终端指令:
/Library/Frameworks/Python.framework/Versions/3.7/bin/pyuic5 Img_ui.ui -o Img_ui.py
- pycharm中,右键点击需要转格式的ui文件—>External Tools—>Pyuic
- 需要转格式的ui文件前带绝对路径,或进入到该文件夹下输入终端指令。
- 注意检查.ui文件,命名不能有空格。不然报错【Error: one input ui-file must be specified】
Designer.exe 自动命名的名字中都有空格,会导致.py生成失败,自己进行重命名即可。
将图片转为ico,icns格式
PythonMagick将图片转为ico格式
将图片转为ico,安装image magick:pip install .../PythonMagick‑0.9.19‑cp37‑cp37m‑win_amd64.whl
whl下载链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pythonmagick
直接pip install PythonMagick会报错,官方库没有该模块,所以要下载whl离线安装。
ERROR: Could not find a version that satisfies the requirement PythonMagick (from versions: none)
ERROR: No matching distribution found for PythonMagick
# 批量将png,jpg图片转化为ico图片
import os
import PythonMagick # 该模块需要下载whl进行安装
#获取目录下文件名清单
files = os.listdir()
if not os.path.exists('icon'):
os.mkdir('icon')
#对文件名清单里的每一个文件名进行处理
for filename in files:
portion = os.path.splitext(filename) # portion为名称和后缀分离后的列表
if portion[1] ==".png" or portion[1] ==".jpg": # 如果为JPG则更改名字
newfile = portion[0]+".ico" # 要改的新后缀#改好的新名字
# 进行格式转换
img = PythonMagick.Image(filename)
img.sample('256x256')
path = os.path.join('icon',newfile)
img.write(path)
print("%s --> %s" % (filename,newfile))
iconutil将图片转为icns格式
通过iconutil生成icns文件,不需要安装模块软件。
- 打开终端输入:
cd 文件夹目录
mkdir icons.iconset
即创建一个叫xxx.iconset的文件夹(xxx 自己定义) - 文件夹目录下有MsgAppIcon.png图片,把MsgAppIcon.png图片转为不同大小的图片,并放入icons.iconset临时目录。
sips -z 16 16 MsgAppIcon.png --out icons.iconset/icon_16x16.png
sips -z 32 32 MsgAppIcon.png --out icons.iconset/icon_16x16@2x.png
sips -z 32 32 MsgAppIcon.png --out icons.iconset/icon_32x32.png
sips -z 64 64 MsgAppIcon.png --out icons.iconset/icon_32x32@2x.png
sips -z 64 64 MsgAppIcon.png --out icons.iconset/icon_64x64.png
sips -z 128 128 MsgAppIcon.png --out icons.iconset/icon_64x64@2x.png
sips -z 128 128 MsgAppIcon.png --out icons.iconset/icon_128x128.png
sips -z 256 256 MsgAppIcon.png --out icons.iconset/icon_128x128@2x.png
sips -z 256 256 MsgAppIcon.png --out icons.iconset/icon_256x256.png
sips -z 512 512 MsgAppIcon.png --out icons.iconset/icon_256x256@2x.png
sips -z 512 512 MsgAppIcon.png --out icons.iconset/icon_512x512.png
sips -z 1024 1024 MsgAppIcon.png --out icons.iconset/icon_512x512@2x.png
- 将这些不同尺寸的图片合并成mac电脑可用的图标icon.icns (保存在cd后的目录里):
iconutil -c icns icons.iconset -o icon.icns
快速生成的shell脚本(.sh后缀),保存下面的代码为icns.sh。
- 在终端输入:
cd 图片MsgAppIcon.png所在目录路径
执行sh脚本:sh icns.sh
# !/bin/bash
setIconImage(){
sips -z 16 16 MsgAppIcon.png --out icons.iconset/icon_16x16.png
sips -z 32 32 MsgAppIcon.png --out icons.iconset/icon_16x16@2x.png
sips -z 32 32 MsgAppIcon.png --out icons.iconset/icon_32x32.png
sips -z 64 64 MsgAppIcon.png --out icons.iconset/icon_32x32@2x.png
sips -z 64 64 MsgAppIcon.png --out icons.iconset/icon_64x64.png
sips -z 128 128 MsgAppIcon.png --out icons.iconset/icon_64x64@2x.png
sips -z 128 128 MsgAppIcon.png --out icons.iconset/icon_128x128.png
sips -z 256 256 MsgAppIcon.png --out icons.iconset/icon_128x128@2x.png
sips -z 256 256 MsgAppIcon.png --out icons.iconset/icon_256x256.png
sips -z 512 512 MsgAppIcon.png --out icons.iconset/icon_256x256@2x.png
sips -z 512 512 MsgAppIcon.png --out icons.iconset/icon_512x512.png
sips -z 1024 1024 MsgAppIcon.png --out icons.iconset/icon_512x512@2x.png
}
mkdir icons.iconset
setIconImage
iconutil -c icns icons.iconset -o icon.icns
打包python代码程序
使用pyinstaller把python项目打包成window下可执行的应用
pyinstaller
是一个可以将 Python 代码打包成一个可执行文件的工具,它会将你的 Python代码和所有依赖项打包成一个单独的可执行文件,让你的代码可以在没有Python解释器的情况下运行。这使得你可以将你的 Python 应用程序发布给没有安装 Python 的用户,或者将它们放在没有 Python 环境的机器上。
打开终端cmd安装模块:pip install pyinstaller
查看参数:pyinstaller -h
pyinstaller常用参数 | 说明 |
---|---|
-icon=图标路径 | 设置图标【-i后面一个空格加图片地址,建议放在同一文件夹下】 |
-F | 打包成一个exe文件。(表示在 dist 文件夹下只生成单个可执行文件(内部包含所有依赖),不加默认会在 dist 生成一大堆依赖文件 + 可执行文件。)小项目可以采用,打开比较慢,多个 .py 打包时不能使用。 |
-D | 默认参数,打包结果放入到创建的文件夹中,可以看到里面有很多的依赖文件。与 -F 相反用法。-F -D 互斥参数。 |
-w | 隐藏命令行运行窗口【即使用项目的 GUI 界面,无 cmd 控制台】(如果你的程序是有界面的,可以不写这个参数。但是测试情况下建议先加上这个参数,因为如果打包不成功,运行时报错信息会在控制台上输出,没有控制台就看不到报错信息。) |
-c | 默认参数,使用cmd 控制台,无窗口。如果打包文件执行报错,可尝试用 -c 显示控制台。-w -c 互斥参数 |
-p | 表示自己定义需要加载的类路径,项目中包含多个自建模块的时候需要加上 -p aaa.py -p bbb.py -p ccc.py。 |
-i | 将 ico 图标打包到 exe 文件中。表示可执行文件的图标,后面跟图标的路径。(例 -i "icon.icns" ,Mac 下图标文件为 icns 格式, Win 为ico 格式)。 |
–name | 设置打包后的应用名称,例 --name “小程序”。 |
–hidden-import | 打包时导包信息。后面跟模块名如 queue,用于告诉打包程序某个模块我用不着你不用打包进去。打包 PyQt 项目强烈建议带上参数 --hidden-import PyQt5.sip |
-n | 执行项目的名称,默认 .py 的文件名 |
window终端输入:
E: 从默认的C盘进入E盘
cd (current/change directory) 当前目录或改变目录
在项目的根目录下执行打包命令 示例:
- 打包为无 cmd 控制台的单个exe文件:
pyinstaller -F -w --icon=“窗口文件图标绝对路径” 文件名.py
- 打包生成不带后台的exe文件:
pyinstaller -F xxx.py --noconsole
- 改变图标:
pyinstaller -F --icon=3.ico xxx.py
🔰打包成功后xxx.exe在当前目录的dist目录下。执行xxx.exe,程序可以正确运行。 如果要给别人用,需要把整个"xxx"文件夹都打包送走。
🔰完成后生成三个文件夹“__pycache__”(缓存)、“build”(临时文件)、“dist”(生成文件)和 一个文件“xxx.spec”(配置文件)
使用 py2app 把python项目打包成mac下可执行的应用
安装模块:pip3.7 install py2app
- 进入工程目录下面:
cd yourProjectDirctory
- 生成 setup.py 文件:
py2applet --make-setup MyApplication.py
指定图标:py2applet --make-setup MyApplication.py --iconfile images/icon.icns
如指令实现不了可修改setup.py文件来指定app图标
注意:不能将icon.icns与主脚本MyApplication.py放在同一文件夹下。它必须放在像images/这样的子文件夹下,否则setup.py中会出现DATA_FILE=[‘–iconfile’],这将失败,因为这不是一个数据文件。
Mac
下图标文件为icns
格式,Win
为ico
格式。
如果执行命令显示-bash: py2applet: command not found,表示未能找到py2applet。
解决办法:通过命令查找“py2applet”的所在位置。 $ sudo find / -name “py2applet” -type f
此时会要求输入密码,输入密码并按回车。(可能不显示输入的字符) 执行命令后,在查找结果中,会有我们需要的位置路径。
例如:/Library/Frameworks/Python.framework/Versions/3.6/bin/py2applet
- 清空以前生成的编译文件:
rm -rf build dist
- 生成mac下的应用:
给其他没有sdk的电脑使用,包括lib库(没有安装sdk的电脑使用,需要去掉-A,将把所有的依赖全部打包):python3.7 setup.py py2app
打包速度快,需要依赖库(自己开发可以使用这种方式):python setup.py py2app -A
- 生成的应用在dist目录下面,可以双击运行MyApplication.app,只需将MyApplication.app文件发送,就可以在其他电脑运行(不需要安装配置环境)
# 修改setup.py文件,指定app图标
from setuptools import setup
APP = ['./demo/demo.py'] # APP启动的py文件,用绝对路径
DATA_FILES = [] # 自写模块放在DATA_FILES列表中,如项目内其他文件['test.py', 'test2.py']
OPTIONS = { # 第三方库放在OPTIONS下的includes对应的列表中,如'includes' : ['requests']
'iconfile':'./demo/images/icon.icns', # APP图标,用绝对路径
'plist': {'CFBundleShortVersionString':'0.1.0'} # APP 版本,软件右键get info可看到版本信息。
}
setup(
app=APP,
data_files=DATA_FILES,
# name = 'demo1', # 软件名字,没有默认为APP启动的py文件名
options={'py2app': OPTIONS}, # 将所有文件打包成一个exe,如果无此代码则会在dist文件夹内生成许多依赖的文件,加上此代码则会把依赖文件都加入一个exe,发给他人使用时不依赖对方机器环境
setup_requires=['py2app'],
)