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