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.

Était-ce utile?

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!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top