PyCharm下PyQT4+PyInstaller的使用

来源:互联网 发布:新闻源软件 编辑:程序博客网 时间:2024/06/05 05:38

上一篇中讲了如何配置开发环境,今天讲一下在这个配置下如何进行简单界面的开发及打包。
本文将采用python直接调用QT Designer生成的.ui文件来产生界面。

  • 在PyCharm中新建一个工程
  • 新建一个test.py文件在工程中。可以使用如下的类似模板的文件内容。只需替换qtCreatorFile中的ui文件路径即可
import sysimport osfrom __future__ import divisionfrom PyQt4 import QtCore, QtGui, uic# Define function to import external files when using PyInstaller.def resource_path(relative_path):    """ Get absolute path to resource, works for dev and for PyInstaller """    try:        # PyInstaller creates a temp folder and stores path in _MEIPASS        base_path = sys._MEIPASS    except Exception:        base_path = os.path.abspath(".")    return os.path.join(base_path, relative_path)qtCreatorFile = "ui\example.ui" # your ui file pathUi_MainWindow, QtBaseClass = uic.loadUiType(resource_path(qtCreatorFile))class MyApp(QtGui.QMainWindow, Ui_MainWindow):    def __init__(self):        QtGui.QMainWindow.__init__(self)        Ui_MainWindow.__init__(self)        self.setupUi(self)if __name__ == "__main__":    app = QtGui.QApplication(sys.argv)    window = MyApp()    window.show()    sys.exit(app.exec_())
  • 使用QT Designer生成ui文件,保存到工程中
  • 使用PyInstaller进行打包, PyInstaller的安装自行百度吧,
    这里是相关参数的说明
usage: pyinstaller [-h] [-v] [-D] [-F] [--specpath DIR] [-n NAME]                   [--add-data <SRC;DEST or SRC:DEST>]                   [--add-binary <SRC;DEST or SRC:DEST>] [-p DIR]                   [--hidden-import MODULENAME]                   [--additional-hooks-dir HOOKSPATH]                   [--runtime-hook RUNTIME_HOOKS] [--exclude-module EXCLUDES]                   [--key KEY] [-d] [-s] [--noupx] [-c] [-w]                   [-i <FILE.ico or FILE.exe,ID or FILE.icns>]                   [--version-file FILE] [-m <FILE or XML>] [-r RESOURCE]                   [--uac-admin] [--uac-uiaccess] [--win-private-assemblies]                   [--win-no-prefer-redirects]                   [--osx-bundle-identifier BUNDLE_IDENTIFIER]                   [--distpath DIR] [--workpath WORKPATH] [-y]                   [--upx-dir UPX_DIR] [-a] [--clean] [--log-level LEVEL]                   [--upx UPX]                   scriptname [scriptname ...]

例如下面这条命令,则将程序打包成一个单文件。

pyinstaller -F -w test.py

参数说明:-F 单文件模式 -w 不显示cmd窗口
不加参数则是单文件夹模式,生成的文件及.exe都会在一个文件夹下,默认是在dist目录下

  • 上一条命令执行后则会在.py的相同目录下生成同名的.spec文件,可以在这个文件中进行一些配置。以后打包就可以直接使用如下命令
pyinstaller test.spec
  • 在spec配置中一个地方的配置比较重要,关系到打包后的程序能否正常运行。
a = Analysis(['test.py'],             pathex=['C:\\PythonProjects\\demo'],             binaries=[],             datas=[('example.ui', 'ui')],             hiddenimports=[],             hookspath=[],             runtime_hooks=[],             excludes=[],             win_no_prefer_redirects=False,             win_private_assemblies=False,             cipher=block_cipher)

就是这句datas=[(‘example.ui’, ‘ui’)] 需要手动添加,第一个参数是当前工程中ui文件的相对路径,第二个参数是打包后ui文件要放入的文件夹,如果想放在根目录下 可以使用”.”, 这里的配置与test.py 中的ui文件的读取代码是对应的,要保持一致。

小结:这样就可以随时根据需要修改ui文件了,而不需每次修改完UI后都要手动将ui文件转换为py文件。有一个地方需要注意一下,就是如果重新执行pyinstaller test.py 则会覆盖spec配置中的datats的设置。但生成spec后就可以用 pyinstaller test.spec进行打包了,spec中都会有相关的参数配置,icon等都可在这里进行设置。
具体可参考pyinstaller的官方文档:点击进入

0 0
原创粉丝点击