У меня есть приложение, разработанное в PyQt4.

У него есть иконки для Windows и QMenus.

Все клиентские системы имеют установленный Python. А PyQt4 загружается из сетевого расположения (\\system_xyz\PyQt4).

Приложение отлично работает в системах разработчика с правильно загруженными иконками. Но когда один и тот же скрипт запускается на клиентах, приложение работает, но значки не загружаются.

В моем приложении я также использовал драйверы Qsql. У него тоже была та же проблема. работает в системе разработчика, но не в системе клиента.

Я мог бы преодолеть эту проблему драйвера SQL, добавив путь к плагину SQL в приложение, как показано ниже

SQLDriverPath = (r'\\system_xyz\PyQt4\plugins\sqldrivers')
QtGui.QApplication.addLibraryPath(SQLDriverPath)

Я понял, что pyqt4 нужен qico4.dll для чтения .ico-файлов. поэтому я добавил путь к imageformats приложению. но это не сработало.

ImageDriverPath = (r'\\system_xyz\PyQt4\plugins\imageformats')
QtGui.QApplication.addLibraryPath(ImageDriverPath)

Может ли кто-нибудь предложить мне правильный подход для решения моей проблемы загрузки .ico в PyQt приложение из сети

МОИ ОБНОВЛЕНИЯ

Я сделал следующее, чтобы перечислить поддерживаемые форматы изображений.

import sys

sys.path.append(r'r'\\system_xyz')

from PyQt4 import QtGui

for imageType in QtGui.QImageReader.supportedImageFormats():
    print imageType

ВЫХОД

bmp
pbm
pgm
png
ppm
xbm
xpm

Я попытался перечислить, как указано выше после добавления imageformats, ОП такой же даже пытался после создания QtGui,QApplication(). Тот же результат без изменений.

3
Rao 28 Янв 2013 в 10:48

2 ответа

Лучший ответ

Вы можете установить пути в файле qt.conf и поместить этот файл в расположение исполняемого файла вашего приложения.

Доступ к PyQt4 из сетевого расположения, скажем, \ somesystem \ Share \ PyQt4

Вы можете найти файл qt.conf в папке \\ somesystem \ Share \ PyQt4, скопировать его и вставить файл .conf в расположение исполняемого файла вашего приложения.

Отредактируйте строки ниже в qt.conf

[Paths]
Prefix = //somesystem/Share/PyQt4
Binaries = //somesystem/Share/PyQt4

Все работает нормально, даже sqldrivers будет загружен. Нет необходимости использовать app.addLibraryPath Вы также можете включить этот файл в ваши настройки, чтобы он был автоматически установлен.

0
Sudeepth Patinjarayil 28 Янв 2013 в 10:59

Хотя ответ принят, вот лучшее решение для загрузки сетевого плагина PyQt4.

После проверки официальных страниц addLibraryPath я обнаружил, что вы должны использовать QtCore.QCoreApplication.addLibraryPath(). Поэтому вместо использования версии QtGui используйте следующее:

QtCore.QCoreApplication.addLibraryPath( '//server/location/PyQt4/plugins' )
app = QtGui.QApplication(sys.argv)

Если вы сделаете это прямо перед созданием приложения QApplication, вы будете настроены. Мне даже не нужно использовать qt.conf для правильной загрузки плагинов с моего сетевого диска.

3
PenguinTD 7 Май 2014 в 18:34