2010-11-05 11 views
0

Je ne sais pas trop où commencer à décrire le problème que j'ai.Py2Exe & Img2Py - Images manquantes après la compilation

J'ai un projet qui utilise un grand nombre d'images. Barres d'outils, menus, listes, etc. Je développe en Eclipse avec PyDev. Je suis capable d'exécuter mon programme depuis Eclipse avec succès, mais je devrai le compiler vers un exécutable afin qu'il puisse être déployé.

Lorsque j'ai tenté de compiler pour la première fois en utilisant Py2Exe, aucune de mes images n'était chargée parce qu'elles utilisaient des chemins relatifs. J'ai trouvé des informations ici: http://www.daniweb.com/forums/thread255458.html avec des informations sur la façon de transformer les chemins relatifs en chemins absolus, mais a choisi de ne pas aller sur cette route car elle nécessitait un encapsuleur supplémentaire sur tous les chemins de l'image. Au lieu de cela, j'ai choisi d'utiliser Img2Py pour convertir toutes mes images en fichiers de ressources. J'ai maintenant un dossier de ressource qui contient des dossiers .py pour chaque image qui est exigée par mon application. Lors de la recompilation avec Py2Exe, je suis en mesure de vérifier que le fichier zip library.bin contient mon dossier de ressources et les fichiers .pyo correspondants pour chaque image. Lorsque je lance mon exécutable, la plupart de mes images ne s'affichent pas. Sur mes barres d'outils, par exemple, les images d'état Activé s'affichent correctement tandis que les images d'état Désactivé sont manquantes. Dans mes listes, aucune de mes images ne s'affiche. Dans les menus, les images apparaissent correctement.

Dans ma classe de barre d'outils, si j'interromps les images désactivées et que je permets à wx d'utiliser son comportement par défaut pour griser l'état Activé les images désactivées, mais cela ne m'aide pas avec mes icônes de liste. Je ne suis même pas sûr quel code est pertinent pour montrer ici - tout fonctionne correctement dans Eclipse, c'est seulement après la compilation en utilisant Py2Exe que je rencontre ces problèmes.

Toutes les suggestions ou avis seront très appréciés. Merci à l'avance,

Répondre

1

J'ai été en mesure de surmonter cela en ajoutant l'option append=True à mes appels à img2py et en supprimant les underscores dans les noms de module d'image. Je ne comprends pas pourquoi cela a eu un effet étant donné que les images qui travaillaient contenaient aussi des caractères de soulignement dans leurs noms, mais cela semble m'avoir permis de contourner le problème. Mon code pour générer la ressource Images finit par être ceci:

from wx.tools.img2py import img2py 
from glob import glob 

for f in glob('*.png'): 
    o = f.replace('-', '').replace('_', '').replace('.png', '') 
    img2py(f, 'Images.py', append=True, imgName=o, icon=True) 

Espérons que cela pourrait s'avérer utile pour quelqu'un d'autre dans le futur. Je sais que je vais finir par y revenir.