使用py转exe,含PyQt5界面

版权声明:仅用于个人学习,分享收获。 https://blog.csdn.net/qq_33431972/article/details/87976568

参考:

大部分资料取自此处,跳转以下网页

https://blog.csdn.net/shuduaa/article/details/80648447

https://blog.csdn.net/yuhijk2055/article/details/80876970

感谢作者的分享!!!!

解决,关于pyqt5转成exe后出问题的情况。


一、QTdesigner生成界面

新建:gui.py

# -*- coding: utf-8 -*-

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(759, 436)
        MainWindow.setToolTip("")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(110, 100, 521, 71))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(110, 240, 521, 71))
        self.pushButton_2.setObjectName("pushButton_2")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 759, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "自动生成淘宝二维码图片"))
        MainWindow.setStatusTip(_translate("MainWindow", "Writen by Li-Bo"))
        self.pushButton.setText(_translate("MainWindow", "点击生成当天销量排行"))
        self.pushButton_2.setText(_translate("MainWindow", "点击生成两小时销量排行"))

二、调用界面

新建:test.py

注意:要import 上述的界面文件

# -*- coding: utf-8 -*-

#
#根据需要import 相应生成的界面
#
import gui


import sys
from PyQt5.QtWidgets import QApplication,QMainWindow




Ui_MainWindow = gui.Ui_MainWindow

class MyApp(QMainWindow, Ui_MainWindow):

    def __init__(self):
        super().__init__()
        QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)
        self.setupUi(self)
        self.createButtons()

    def get_top_day_goods(self):
        with open("top_day.txt", "w") as f:
            for index in range(100):
                f.write(str(index)+ "\n")

    def get_top_hour_goods(self):
        with open("top_hours.txt", "w") as f:
            for index2 in range(100):
                f.write(str(index2) + "\n")

    def createButtons(self):
        self.pushButton.clicked.connect(self.get_top_day_goods)
        self.pushButton_2.clicked.connect(self.get_top_hour_goods)
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyApp()
    window.show()
    sys.exit(app.exec_())

三、打包发布EXE程序

方法(1)终端直接输入:

cd到指定目录后,执行以下命令:

pyinstaller -F -w --paths=G:\program\python37\Lib\site-packages\PyQt5\Qt\bin --paths=G:\program\python37\Lib\site-packages\PyQt5\Qt\plugins  test.py

pyinstaller -F -w --paths=地址\plugins --paths=地址\bin  文件名.py

注意:本文中用到了PyQt5作为界面,因此打包时要添加–paths来指定PyQt5的路径(ps:你要针对自己的安装路径进行修改):

--paths=G:\program\python37\Lib\site-packages\PyQt5\Qt\plugins

--paths=G:\program\python37\Lib\site-packages\PyQt5\Qt\bin

py转exe方法:https://blog.csdn.net/qq_33431972/article/details/87970503


方法(2)写一个文件,让它自动执行

新建:py2exe.py

# -\- coding: utf-8 -\-
# -F:打包成一个EXE文件 
# -w:不带console输出控制台,window窗体格式 
# --paths:依赖包路径 
# --icon:图标 
# --noupx:不用upx压缩 
# --clean:清理掉临时文件

from PyInstaller.__main__ import run

if __name__ == '__main__':
    opts = ['-F', 
            '-w', 
            '--paths=G:/program/python37/Lib/site-packages/PyQt5/Qt/bin',
            '--paths=G:\program\python37\Lib\site-packages\PyQt5\Qt\plugins',
            '--noupx', 
            '--clean',
            'test.py']
    run(opts)

终端运行:python py2exe.py

四、运行exe

运行py文件路径下的dist,找到test.exe

运行成功,如下图。

猜你喜欢

转载自blog.csdn.net/qq_33431972/article/details/87976568