2010-02-22 28 views
10

Tengo un pequeño programa en PyQt4 y quiero compilar el programa en un Exe. Estoy usando py2exe para hacer eso. Puedo establecer con éxito el icono en la barra de título de Windows usando el siguiente código, pero cuando lo compilo en exe, el ícono se pierde y veo la aplicación predeterminada de Windows. aquí está mi programa:Ventana Icono de Exe en PyQt4

import sys 
from PyQt4 import QtGui 


class Icon(QtGui.QWidget): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 

     self.setGeometry(300, 300, 250, 150) 
     self.setWindowTitle('Icon') 
     self.setWindowIcon(QtGui.QIcon('c:/python26_/repy26/icons/iqor1.ico')) 


app = QtGui.QApplication(sys.argv) 
icon = Icon() 
icon.show() 
sys.exit(app.exec_()) 

**** Aquí está el setup.py para py2exe ****

from distutils.core import setup 
import py2exe 

setup(windows=[{"script":"iconqt.py" 
       ,"icon_resources": [(1, "Iqor1.ico")]}] 
        ,options={"py2exe":{"includes":["sip", "PyQt4.QtCore"]}}) 

Respuesta

4

Creo que necesita para hacer referencia al archivo .ico directamente desde el EXE o DLL que está creando con py2exe. Parece que tienes el script setup.py correcto, así que échale un vistazo a: http://www.py2exe.org/index.cgi/CustomIcons. Hay un ejemplo para wxWidgets, pero podrías intentar adaptarlo a Qt.

0

que sugeriría usted para crear un archivo llamado YourApp.rc, sume la línea siguiente:

IDI_ICON1 ICON DISCARDABLE "res/icons/app_icon.ico" 

A continuación, en el archivo de .PRO, se suman las siguientes líneas:

win32{ 
RC_FILE = YourApp.rc 
} 

¡Debería arreglar tu problema!

+0

¿Qué archivo .PRO? Py2exe usa setup.py. Esta respuesta no tiene sentido. – James

+1

Sí, mi mal, pensé que usaban el mismo proceso que en C++. La última parte de tu comentario es innecesaria. –

15

El problema es que py2exe no incluye el complemento del lector de iconos qt. Necesita decirle que lo incluya con el parámetro data_files. Algo en esta línea:

setup(windows=[{"script":script_path, 
       "icon_resources":[(1, icon_path)]}], 
     data_files = [ 
      ('imageformats', [ 
       r'C:\Python26\Lib\site-packages\PyQt4\plugins\imageformats\qico4.dll' 
       ])], 
     options={"py2exe":{"packages":["gzip"], 
         "includes":["sip"]}}) 
+3

Simplemente perfecto. Resuelve exactamente mi problema Ps este truco también funciona para PySide. – Pinch

+1

gracias! me funciona también. – Meloun

+0

Tengo una configuración similar, pero no está funcionando. ¿Te importaría echarle un vistazo? http://stackoverflow.com/questions/17687347/win7-taskbar-icon-incorrect-for-pyside-py2exe-app – ArtOfWarfare

0

Tuve el mismo problema. Por alguna razón funcionó muy bien con un archivo image.png & no un archivo image.ico. No hay idea de por qué. Pero convertí el ico a png & funcionó

Cuestiones relacionadas