QGraphicsPixmapItem n'apparaîtra après avoir utilisé cx_freeze
-
28-10-2019 - |
Question
Je vais avoir du mal à comprendre pourquoi mon QGraphicsPixmapItem n'apparaît pas après que je construis l'application à l'aide cx_freeze. Y a-t-il des problèmes connus avec cette classe et cx_freeze ou suis-je manque certains paramètres avec cx_freeze? Voici la partie qui crée et l'affichage de la QGraphicsPixmapItem et après c'est mon setup.py pour 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)
et est ici le script 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')])
Tout le reste fonctionne dans le programme, c'est la seule chose qui ne fonctionne pas (cela fonctionne si je viens de lancer le script .py, mais pas quand je lance l'exe). Je reçois aucune erreur quand je construis ou d'exécuter l'exe. Si quelqu'un pouvait aider à ce qui serait génial. J'utilise Python v3.1 et cx_freeze v4.2.3 et PyQt v4.
La solution
Alors j'ai trouvé la réponse à ma question. Apparemment, le problème n'a pas été à la classe QGraphicsPixmapItem, il était avec la partie QtSvg de l'application. Ce qui me secouèrent parce que la sortie de cx_freeze a montré que le module QtSvg a été inclus lors de la création de l'exécutable, mais qui ne sont pas tout ce qui est nécessaire par le programme. Il a besoin du fichier qt.conf aussi avec elle. Tout ce que je devais faire pour résoudre le problème était d'aller trouver le fichier à qt.conf « ... \ Python31 \ Lib \ site-packages \ PyQt4 \ bin \ qt.conf » et copiez ce fichier dans le répertoire où exécutable de votre application est à et voilà, ça marche!