PyCharm下PyQT4+PyInstaller的使用

PyCharm下PyQT4+PyInstaller的使用上一篇中讲了如何配置开发环境 今天讲一下在这个配置下如何进行简单界面的开发及打包 本文将采用 python 直接调用 QTDesigner 生成的 ui 文件来产生界面 1 在 PyCharm 中新建一个工程 2 新建一个 test py 文件在工程中 可以使用如下的类似模板的文件内容 只需替换 qtCreatorFil 中的 ui 文件路径即可 importsysimp fu

  • 在PyCharm中新建一个工程
  • 新建一个test.py文件在工程中。可以使用如下的类似模板的文件内容。只需替换qtCreatorFile中的ui文件路径即可
 import sys import os from __future__ import division from 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 path Ui_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
  • 上一条命令执行后则会在.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文件的读取代码是对应的,要保持一致。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/173051.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月27日 上午9:34
下一篇 2026年3月27日 上午9:34


相关推荐

  • NetXray「建议收藏」

    NetXray「建议收藏」NetXRay是由CincoNetworks公司开发的一个用于高级分组检错的软件,功能很强大。IP地址查询工具。硬件要求硬件要求对硬件要求低,可运行常用的windows平台。主要功能主要功

    2022年7月2日
    24
  • Mysql 多表查询详解

    Mysql 多表查询详解纸上得来终觉浅1.前言:上篇讲到Mysql中关键字执行的顺序,只涉及了一张表;实际应用大部分情况下,查询语句都会涉及到多张表格:1)多表连接有哪些分类;2)针对这些分类有哪些连接方法?3)这些连接方法分别作用于哪些应用场景?这篇针对这三个点通过实例来讲述,目的是穷尽所有的场景和所有的方法,并且对每个方法的使用做实例。2.假设有两张表格A和B,把表格当作一个集合,那么表格中

    2022年5月31日
    35
  • MySQL中文参考手册

    MySQL中文参考手册

    2021年6月19日
    98
  • redis缓存雪崩 缓存穿透 缓存击穿如何解决_防止redis缓存击穿

    redis缓存雪崩 缓存穿透 缓存击穿如何解决_防止redis缓存击穿缓存的击穿、穿透和雪崩应该是再熟悉不过的词了,也是面试常问的高频试题。不过,对于这三大缓存的问题,有很多人背过了解决方案,却少有人能把思路给理清的。而且,网络上仍然充斥着,大量不太靠谱的解决方案,难免误人子弟。我的这篇文章,则会对这三大缓存问题,做一个深入的探讨和分析。最有价值的,不是答案本身,而是诞生答案的过程。缓存击穿缓存击穿是什么,大家应该心里都清楚,我只做一个简单通俗的解释:…

    2025年11月14日
    5
  • 零基础PHP7.4安装curl扩展

    零基础PHP7.4安装curl扩展零基础 PHP7 4 安装 curl 扩展一 PHP 的 curl 扩展主要用于 curl 连接相关操作 二 安装 curl1 进入 php 安装包的 ext curl 目录 cdphp 7 4 16 ext curl3 执行 phpize usr local php bin phpize4 执行 configure configurewit php config usr local php bin php config5 编译安装 make amp amp make

    2026年3月26日
    1
  • leetcode-76最小覆盖子串(双指针)

    leetcode-76最小覆盖子串(双指针)原题链接给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。示例 1:输入:s = “ADOBECODEBANC”, t = “ABC”输出:”BANC”示例 2:输入:s = “a”, t = “a”输出:”a” 提示:1 <= s.length, t.length <= 105s 和 t 由英文字母组成进阶:

    2022年8月8日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号