【发布时间】:2018-01-04 21:48:56
【问题描述】:
我编写了一个密码生成器,并使用 PyQt5 设计器为它构建了一个 GUI。该脚本在其发起程序中调用 .ui,并且两者都在同一个文件夹中。
def __init__(self, parent=None):
super().__init__(parent)
self.ui = uic.loadUi('Generator.ui', self)
但是,通过 PyInstaller 将两者都转换为 .exe 文件后,从其 dist 文件夹中提取 .exe 文件并执行后,控制台会立即弹出并关闭,而不显示 GUI。
如何在不手动将 .ui 代码添加到 Generator.py 脚本的情况下解决此问题??
谢谢
【问题讨论】:
-
如果您在命令提示符下运行可执行文件,您可以捕获错误,然后人们可能会提供解决方案。我的第一个猜测是 .ui 文件的路径有问题。您是否将其明确包含在您的可执行文件中?
-
您可以使用 pyuic 工具将 .ui 文件制作成 .py 文件,然后将创建的 Ui_whatever 类子类化到您的 GUI 类中。这与您发布的方法不同,但我在许多使用 pyinstaller 创建的应用程序中都使用了这种方法。
-
@Eric 如何在可执行路径中包含 .ui 文件?我只是使用'pyinstaller.exe --onefile Generator.py'
-
@MalloyDelacroix 我也会尝试这种方法。所以只需将.ui文件转换为.py文件,然后在主脚本中导入生成的.py,然后我将其转换为.exe?
-
基本上。在创建的 .py 文件中,将生成一个类,其名称与您在 QtDesigner 中命名的小部件的名称相同。导入此类并将其子类化。
标签: python pyqt5 pyinstaller