Pregunta

Tengo problemas para entender por qué mi QgraphicsPixMapitem no aparece después de construir la aplicación usando CX_FREEZE. ¿Hay algún problema conocido con esa clase y cx_freeze o me falta algunas configuraciones con cx_freeze? Aquí está la parte que está creando y mostrando el QgraphicsPixMapitem y después de eso es mi configuración para 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)

Y aquí está el 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')])

Todo lo demás funciona en el programa, esto es lo único que no funciona (funciona si solo ejecuto el script .py, pero no cuando ejecuto el exe). No recibo errores cuando construyo o ejecuto el exe. Si alguien pudiera ayudar con esto, sería genial. Estoy usando Python V3.1 y Cx_Freeze V4.2.3 y Pyqt V4.

¿Fue útil?

Solución

Entonces encontré la respuesta a mi pregunta. Aparentemente, el problema no era con la clase QgraphicsPixMapitem, fue con la parte QTSVG de la aplicación. Lo que me lanzó porque la salida de CX_Freeze mostró que el módulo QTSVG se incluyó al crear el ejecutable, pero eso no es todo lo que el programa necesita. Necesita el archivo Qt.Conf también con él. Todo lo que tenía que hacer para solucionar el problema era buscar el archivo Qt.conf en '... python31 lib site-packages pyqt4 bin qt.conf' y copie ese archivo en el directorio donde el ejecutable de su aplicación está en y voilà, funciona!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top