Python GUI pycharm+Pyqt5 配置及打包成exe

一、pycharm安装pyqt5插件

1、打开pycharm,点击settings

2、添加插件pyqt5,pyqt5-tools

命令行添加: 

pip install pyqt5
pip install pyqt5-tools

pycharm添加插件: 

3、点击settings —> Tools —> External Tools,配置参数

QtDesinger:以下第一个修改为相应路径,路径根据自己安装的python路径而定。

QtDesinger
E:\Files\python\Lib\site-packages\pyqt5_tools\designer.exe
$FileDir$$FileName$
$FileDir$


pyuic5:
E:\Files\python\Scripts\pyuic5.exe
$FileName$ -o $FileNameWithoutExtension$.py
$FileDir$


pyrcc:
E:\Files\python\Scripts\pyrcc5.exe
$FileNameWithoutExtension$
$FileDir$

4、先加QtDesinger的参数,program:E:\Files\python\Lib\site-packages\pyqt5_tools\designer.exe,根据安装目录修改地址,arguments:$FileDir$\$FileName$ ,working directory:$FileDir$。

5、添加pyuic5的参数,这个是把qt的UI文件转换成.py文件的工具,program:E:\Files\python\Scripts\pyuic5.exe,根据安装目录修改地址,arguments:$FileName$ -o $FileNameWithoutExtension$.py,working directory:$FileDir$。

6、添加pyrcc的参数,这个是将资源文件如图片等转成python代码能识别的文件,program:E:\Files\python\Scripts\pyrcc5.exe,根据安装目录修改地址,arguments:$FileName$ -o $FileNameWithoutExtension$.py,working directory:$FileDir$。

7、pycharm添加插件后查看添加结果

8、点击Tools —> Externam Tools —> QtDesinger,运行

9、保存后路径下生成 test1.ui 

10、ui文件转为 py 文件,右键 test1.ui —> Extreme Tools —> pyuic5,即可在当前路径下生成 test1.py

命令行运行 pyuic:

pyuic5 -o one.py one.ui

遇到的坑: python error:No such file or directory: "one.ui"

working directory 设置项设置为了 $ProbjectFileDir$,这样就会找不到 .ui 文件;修改为$FileDir$,即可。

11、编写 main.py

import sys
import test1
from PyQt5.QtWidgets import QApplication, QMainWindow

if __name__ == '__main__':
    app = QApplication(sys.argv)
    MainWindow = QMainWindow()
    ui = test1.Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

二、打包插件

1、若需要打包成exe,安装插件pyinstaller,方法类似上面安装,之后在Terminal输入

pyinstaller -F test1.py
pyinstaller -F -i snail.ico Application.py

既会在dist文件下生成test1.exe
参数 含义
-F 指定打包后只生成一个exe格式的文件
-D  –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-c  –console, –nowindowed 使用控制台,无界面(默认)
-w  –windowed, –noconsole 使用窗口,无控制台
-p 添加搜索路径,让其找到对应的库
-i 改变生成程序的icon图标

2、Py2exe是python的一个打包成exe的工具,官方提供的可执行文件还不支持python3。

打包firstPyQt5工程

2.1、编写打包脚本

新建一个 python 打包配置文件 setup.py

from distutils.core import setup
import py2exe
import sys

py2exe_options = {
    "includes": ["sip"],
    "dll_excludes": ["MSVCP90.dll",],
    "compressed": 1,
    "optimize": 2,
    "ascii": 0,
    "bundle_files": 1,
    }

setup(
  name = '第一个PyQt5程序',
  version = '1.0',
  windows = ['main.py'],
  zipfile = None,
  options = {'py2exe': py2exe_options}
  )

2.2、运行打包命令,进入到你的工作目录,在cmd里执行

python setup.py py2exe

三、运行生成的 .py 文件 

这个时候直接运行.py文件,发现图形界面不会显示?

第一步:这里需要注释掉三行代码,如图: 

第二步:在文件末尾加上一段运行相关代码:

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    widget = QtWidgets.QWidget()
    ui = Ui_MainWindow()
    ui.setupUi(widget)
    widget.show()
    sys.exit(app.exec_())

'''
if __name__ == "__main__" 
用于判断是否直接运行了该.py文件。 
modul(模块),也就是.py文件。所有的模块都有一个内置属性__name__。
如果 import 一个模块,那么模块__name__的值通常为模块文件名,不带路径或者文件扩展名。
但如果直接运行一个模块,那么__name__的值是__main__

widget = QtWidgets.QWidget() 
因为Qt Designer默认继承的object类,不提供show()显示方法,
所以我们生成一个QWidget对象来重载我们设计的Ui_MainWindow类,达到显示效果。

sys.exit(app.exec_()) 
app.exec_() ——运行app 
sys.exit(app.exec_())——消息循环结束之后返回0,接着调用sys.exit(0)退出程序
'''

第三步:右键->run 就可以看到界面啦

2、将运行代码移到一个外部文件进行管理
注意这个和前面所讲的 右键->run 就能显示界面的方式并不冲突,这样解构的原因是方便管理与扩展,同样的那三行代码不注释掉,依旧会无法显示界面,在这个文件中 右键->run 界面也可以运行界面,需要调用这个模块的文件写法:

import sys
from first import Ui_MainWindow  # 这里的first是.ui文件生成的.py文件名
from PyQt5 import QtWidgets

# 这个类继承界面UI类
class mywindow(QtWidgets.QWidget, Ui_MainWindow):
    def __init__(self):
        super(mywindow, self).__init__()
        self.setupUi(self)

#调用show
if __name__=="__main__":
    app=QtWidgets.QApplication(sys.argv)
    myshow=mywindow()
    myshow.show()
    sys.exit(app.exec_())

猜你喜欢

转载自blog.csdn.net/u011146423/article/details/85053053