Domanda

Ho difficoltà a capire perché il mio QGraphicsPixMapitem non si presenta dopo aver costruito l'applicazione usando CX_Freeze. Ci sono problemi noti con quella classe e cx_freeze o mi mancano alcune impostazioni con cx_freeze? Ecco la parte che sta creando e visualizzando QgraphicsPixMapitem e dopo questo è il mio setup.py per 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)

Ed ecco lo 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')])

Tutto il resto funziona nel programma, questa è l'unica cosa che non funziona (funziona se eseguo semplicemente lo script .py, ma non quando eseguo Exe). Non ricevo errori quando costruisco o eseguo l'EXE. Se qualcuno potesse aiutare in questo sarebbe fantastico. Sto usando Python V3.1 e CX_Freeze V4.2.3 e Pyqt V4.

È stato utile?

Soluzione

Quindi ho trovato la risposta alla mia domanda. Apparentemente il problema non era con la classe QgraphicsPixMapitem, era con la parte QTSVG dell'applicazione. Il che mi ha buttato via perché l'output di CX_Freeze ha mostrato che il modulo QTSVG è stato incluso durante la creazione dell'eseguibile, ma non è tutto ciò che è necessario per il programma. Ha bisogno anche del file Qt.Conf. Tutto quello che dovevo fare per risolvere il problema era andare a trovare il file qt.conf in '... python31 lib site-packages pyqt4 bin qt.conf' e copiare quel file nella directory in cui l'eseguibile dell'applicazione dell'applicazione è a e voilà, funziona!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top