一、pyqt5
1.ui转py文件:
pyuic5 -o main.py mainwindow.ui
稍加观察一下这个main.py文件就可以察觉,其中只包含一个名叫Ui_MainWindow的类,类之外没有可以执行的代码,当然现在执行这个文件什么都不会发生。这时候需要对main.py添加一点代码使得设计好的UI能够出现在我们面前。
- main.py文件已经自己引入了PyQt5库中的几个大类,QtCore, QtGui, QtWidgets;这不够,我们还需要引入sys库,所以添加:
import sys
- 除次之外,我们需要在class之外添加一些代码,将类实例化,并且运行这个实例:
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
2.信号和槽连接
self.pushButton.clicked.connect(lambda :self.函数(参数1,参数2))
二、py转exe
1.pyinstaller
离线安装会有几个依赖包future、pefile、pywin32-ctypes,按顺序装完这三个再安装pyinstaller;
命令行执行:pyinstaller -Fw main.py
此处打包一个不显示dos窗口且在dist文件夹下形成一个exe文件的包,有其它需求可百度Fw等参数。
打包完成运行会提示错误,需要拷贝:Anaconda3/Library/plugins下的platforms文件夹到dist文件夹下。
提示:
使用pyinstaller打包后,exe文件会比较大,这是由于默认的把所有的包都集成到里面了,如果想要文件小一点,可以安装一个纯净版的python,只安装需要的包,或者打包时候打包成文件夹的形式,再删除不需要的包。
2.cxfreeze
安装直接下载安装就行,https://www.lfd.uci.edu/~gohlke/pythonlibs/
打包时候需要使用绝对路径:cxfreeze D:/hello.py --target-dir D:/123
需要注意的是,安装完可能会提示没有cxfreeze这个命令,参考往上查到的,在Anaconda3/Scripts文件夹下添加一个cxfreeze.bat文件,内容如下:
@ echo off
D:\Anaconda3\python.exe D:\Anaconda3\Scripts\cxfreeze %*
参考文献:
1、https://www.jianshu.com/p/43300f85af3e
2、https://www.zhihu.com/question/41211581