Saltar al contenido

PyInstaller no cargará las imágenes de PyQt en la GUI

Luego de mucho luchar pudimos encontrar la contestación de este inconveniente que muchos los usuarios de nuestro espacio han tenido. Si tienes algún dato que aportar puedes dejar tu comentario.

Solución:

Pude resolver esto, y esto debería ayudar a otros también:

  • Cree el archivo .spec con el siguiente comando:

    python Makespec.py --noconsole --icon="youricon.ico" --name="App name" program.py
    
  • Abra el archivo .spec (p. ej.: Nombre de la aplicación/Nombre de la aplicación.spec) y debería ver algo como esto:

    a = Analysis([
            os.path.join(HOMEPATH,'support\_mountzlib.py'),
            os.path.join(HOMEPATH,'support\useUnicode.py'),
            'program.py'
        ], pathex=[
            'C:\Your\User\Path\To\pyinstaller'
    ])
    pyz = PYZ(a.pure)
    exe = EXE(
            pyz,
            a.scripts,
            exclude_binaries=1,
            name=os.path.join('build\pyi.win32\App Name', 'App Name.exe'),
            debug=False,
            strip=False,
            upx=True,
            console=False , icon='youricon.ico'
    )
    coll = COLLECT(
            exe,
            a.binaries,
            a.zipfiles,
            a.datas,
            strip=False,
            upx=True,
            name=os.path.join('dist', 'Hey Mang!')
    )
    app = BUNDLE(coll, name=os.path.join('dist', 'Hey Mang!.app'))
    

    Y antes a.binarios debe agregar este fragmento de código:

           Tree('C:\Your\App\Path\To\Images'),
    

    Entonces, cuando PyInstaller lee el archivo .specel compilador pasará la imagen al dist directorio.

  • Ahora tenemos que crear el archivo .qrc, que cargará nuestras imágenes. Y este archivo debería ser algo como esto:

    
      
        img/image1.png
        img/image2.png
        img/image3.png
      
    
    

    Con tus imágenes, obviamente. Y esto debe compilarse en formato .py, con el siguiente comando:

    pyrcc4 -o images.qrc images_qr.py
    
  • Y finalmente, necesitamos agregar esto a nuestro script, por ejemplo así:

    import images_qr
    
    ...
    
    self.setWindowIcon(QtGui.QIcon(':/img/image1.png')) # The colon must be there
    

Y una vez que compile, debería ver las imágenes bien, así:

Espero que esto ayude a todos con el mismo problema. Recuerde proporcionar las rutas de imagen adecuadas y agregar los dos puntos a sus imágenes.

Una actualización rápida del método a continuación. En primer lugar, esta es una excelente manera de incluir fácilmente imágenes en una aplicación PyQt/Pyside. Para Pyside, simplemente use pyside-rcc.exe en lugar de pyrcc4.

En segundo lugar, no estoy convencido de que el Tree(...) el comando es incluso necesario. Después de crear una carpeta dist con este método, eliminé todos los archivos de imagen que se copiaron con el Tree.. dominio. Mi ejecutable aún funciona y las imágenes se muestran correctamente. Entonces puede ser que simplemente necesitemos crear el archivo qrc ​​y ejecutar el programa pyrcc, asegurándonos de que los módulos de python estén actualizados con los dos puntos prefix para iamge rutas de archivo.

Si está utilizando Qt Designer, puede agregar iconos e imágenes sin mucha dificultad. Siga el tutorial aquí http://doc.qt.io/qt-4.8/designer-resources.html

Probado en PySide 1.2.2 con Qt Designer 4.8.5 y Pyinstaller 2.1

Te mostramos comentarios y calificaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *