QGraphicsPixmapItem не появится после использования CX freeze


Мне трудно понять, почему мой QGraphicsPixmapItem не появляется после того, как я построю приложение с помощью cx_freeze. Есть ли какие-либо известные проблемы с этим классом и cx_freeze или я пропустил некоторые настройки с cx_freeze? Вот часть, которая создает и отображает QGraphicsPixmapItem и после этого является моей setup.py для cx_freeze:

def partNo_changed(self):
    self.scene.removeItem(self.previewItem)
    partNumber = self.ui.partNo.text()
    fileLocation = 'drawings\FULL\%s.svg' % partNumber
    print(fileLocation)
    pixmap = QtGui.QPixmap(fileLocation)
    self.previewItem = QtGui.QGraphicsPixmapItem(pixmap)
    self.previewItem.setPos(0, 0)
    self.scene.addItem(self.previewItem)
    self.ui.svgPreview.centerOn(self.previewItem)

А вот и setup.py сценарий:

from cx_Freeze import setup, Executable

files = ['drawings\FULL']

setup(
        name = 'DBManager',
        version = '1.0',
        description = 'Makes and maintains the .csv database files.',
        author = 'Brock Seabaugh',
        options = {'build_exe': {'include_files':files, 'bin_path_includes':files}},
        executables = [Executable('dbManager_publicDB.py')])

Все остальное работает в программе, это единственное, что есть не работает(это работает, если я просто запускаю скрипт .py, но не тогда, когда я запускаю exe). Я не получаю никаких ошибок при сборке или запуске exe. Если бы кто-то мог помочь с этим, это было бы здорово. Я с помощью Python В3.1 и cx_freeze В4.2.3 и PyQt В4.

1 2

1 ответ:

Итак, я нашел ответ на свой вопрос. Очевидно, проблема была не в классе QGraphicsPixmapItem, а в части приложения QtSvg. Это сбило меня с толку, потому что вывод cx_freeze показал, что модуль QtSvg был включен при создании исполняемого файла, но это не все, что нужно программе. Он должен скрытно.conf файл также с ним. Все, что мне нужно было сделать, чтобы решить эту проблему, - это найти qt.conf file at '...\Python31\Lib\site-packages\PyQt4\bin\qt.конф ' и скопируйте этот файл в каталог, где находится исполняемый файл вашего приложения, и вуаля, он работает!