使用 py2exe 编译 PyQt4 python 代码后,SVG 图像不出现

发布于 2024-09-13 12:49:54 字数 850 浏览 4 评论 0原文

我使用 svg 图像作为图标编写了 python 应用程序。

QtGui.QIcon(':icons/icon.svg')  <- just like this

它可以在我的计算机上运行,​​但是用 py2exe 编译并在另一台计算机上运行后,没有图标。 如果我尝试例如 bmp 格式,一切正常。所以我认为这可能是一些图书馆的问题。 我不知道 PyQt4 用于 svg 图形的什么。

在我编写的 setup.py 文件中

dllList = ('mfc90.dll','msvcp90.dll','qtnetwork.pyd','qtxmlpatterns4.dll', 'qsvg4.dll', 'qsvgd4.dll')
origIsSystemDLL = py2exe.build_exe.isSystemDLL
def isSystemDLL(pathname):
    if os.path.basename(pathname).lower() in dllList:
        return 0
    return origIsSystemDLL(pathname)
py2exe.build_exe.isSystemDLL = isSystemDLL

setup(windows=[{"script" : "myApp.py"}], options={"py2exe" : {"includes" : ["sip", "PyQt4.QtNetwork", "PyQt4.QtWebKit", "PyQt4.QtSvg" ]}})

,myApp.exe 目录中还包含 imageformats 文件夹(带有 qvg4.dll 等),

那么如何解决这个问题?

谢谢, 贾雷克

I wrote python application using svg images as icons.

QtGui.QIcon(':icons/icon.svg')  <- just like this

it works on my comuter but after compiling it with py2exe and running on another computer, theres no icons.
if i try e.g. bmp format, all works fine. so i think it could be some library problem.
I don't know what PyQt4 uses for svg graphics.

in setup.py file i wrote

dllList = ('mfc90.dll','msvcp90.dll','qtnetwork.pyd','qtxmlpatterns4.dll', 'qsvg4.dll', 'qsvgd4.dll')
origIsSystemDLL = py2exe.build_exe.isSystemDLL
def isSystemDLL(pathname):
    if os.path.basename(pathname).lower() in dllList:
        return 0
    return origIsSystemDLL(pathname)
py2exe.build_exe.isSystemDLL = isSystemDLL

setup(windows=[{"script" : "myApp.py"}], options={"py2exe" : {"includes" : ["sip", "PyQt4.QtNetwork", "PyQt4.QtWebKit", "PyQt4.QtSvg" ]}})

and also have imageformats folder (with qvg4.dll etc.) included in myApp.exe directory

so how solve this problem?

thanks,
jarek

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

烦人精 2024-09-20 12:49:59

qsvg 插件需要 QtXml。将 "PyQt4.QtXml" 添加到您的包含中。

另请参阅Qt 中的库依赖项

The qsvg plugin requires QtXml. Add "PyQt4.QtXml" to your includes.

Also see library dependencies in Qt.

少女的英雄梦 2024-09-20 12:49:58

你必须在应用程序的主安装目录(实际上是应用程序的工作目录)中添加一个qt.conf,其中包含:

[Paths]
Plugins = <directory containing the image plugins directory>

所以目录布局是:

  • app.exe
  • qt.conf
  • plugins/
    • 图像格式/
      • qsvg4.dll

然后在本例中,qt.conf 中的目录是 plugins

You have to add a qt.conf in your application's main installation directory (actually, the application's working directory), containing:

[Paths]
Plugins = <directory containing the image plugins directory>

So the directory layout is:

  • app.exe
  • qt.conf
  • plugins/
    • imageformats/
      • qsvg4.dll

And then in this case, the directory in qt.conf is plugins.

八巷 2024-09-20 12:49:57

使用的插件(Qt 4.6)是:

  • plugins/
    • 图标引擎/
      • qsvgicon4.dll

正如 Ivo 所解释的,您仍然需要 qt.conf。

The plugin used (Qt 4.6) is:

  • plugins/
    • iconengines/
      • qsvgicon4.dll

You still need qt.conf as Ivo explained.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文