我在QT Creatro中创建了一个GUI,并将其存储为*.ui文件。使用 PyQT,我制作了一个 GUI,当它作为启动时工作正常
$ python pyapp.py
为了将这个应用程序构建成可以通过双击它来执行的东西,我使用了 Py2app。但是,单击该图标两次后,我在出现的对话框中收到以下错误:
pygui Error
打开控制台后,似乎以下原因导致此错误:
12/06/2015 15:58:30.084 pygui[29757]: IOError: [Errno 2] No such file or directory: 'mainwindow.ui'
似乎我使用 QT Creator 创建的 gui 在打开时没有被应用程序找到。知道为什么会这样吗?
提前谢谢。
发生这种情况是因为py2app无法找到通过代码中的字符串路径指定的文件。它不会在二进制文件中包含这些文件。您可以执行以下两种操作之一来解决您的问题。
1) 您必须使用 pyuic4
(包含在 PyQt4 安装中)将 .ui 文件转换为.py文件。完成此步骤后,您将拥有一个.py文件。然后,不要使用 .ui,而是导入.py文件并从文件中生成的类继承.py类。这将允许py2app包含来自python模块的ui,而不是搜索.ui文件。
2) 您可以简单地手动将 .ui 文件放在 py2app 创建二进制文件的同一目录中。它应该可以正常工作。
更新
如果要尝试第二个解决方案,则需要指定 .ui 文件的完整路径。您可以通过在 python 模块中使用__file__
属性来执行此操作。代替uic.loadUiType("mainwindow.ui")
,使用uic.loadUiType(os.path.join(os.path.dirname(__file__), "mainwindow.ui"))