2010-08-08 3 views
4

Я написал приложение python, используя svg-изображения в качестве значков.SVG-изображения не появляются после компиляции пионного кода PyQt4 с py2exe

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

это работает на моем comuter, но после компиляции с 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" ]}}) 

, а также иметь папку imageformats (с qvg4.dll и т.д.), включенных в MYAPP.EXE каталог

так, как решить эту проблему?

спасибо, ЯРЕКА

ответ

2

Вы должны добавить qt.conf в основном каталоге установки приложения (на самом деле, рабочий каталог приложения), содержащее:

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

Так раскладка каталога:

  • app.exe
  • qt.conf
  • плагины/
    • imageformats/
      • qsvg4.dll

И тогда в этом случае каталог в qt.conf является plugins.

3

Плагин используется (Qt 4.6):

  • плагины/
    • iconengines/
      • qsvgicon4.dll

Вам все еще нужно кварты .conf, как объяснил Иво ,

+0

Если вы хотите отказаться от папки плагинов (поместите значки в папку приложения верхнего уровня), вам не нужен qt.conf. – Compholio

Смежные вопросы