IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PyQt Python Discussion :

QGraphicsView, QtOpenGL et py2exe


Sujet :

PyQt Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Mysti¢
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 155
    Par défaut QGraphicsView, QtOpenGL et py2exe
    Bonjour,

    Je me suis recemment tourne vers PyQt pour developper un utilitaire multi-plateforme destine aux "Gamers" et je me retrouve confronter a un probleme lorsque j'utilise py2exe pour generer un binaire a partir de mon programme.

    J'ai deja reussi a compiler des applications incluant un grand nombre de modules en plus de Qt sans trop de difficultes et c'est la raison pour laquelle je pense que la source de mon probleme doit venir des options de compilation de py2exe.

    Concretement, lorsque je lance mon programme en utilisant l'interpreteur Python (2.5 ou 2.6) l'image que contient ma "GraphicsView" s'affiche correctement. En revanche apres avoir genere le .exe, j'obtiens juste un cadre blanc.

    Voici le code en question (fonctionnel avec la librairie PyQt4 installe):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    from PyQt4 import QtCore, QtGui, QtOpenGL
    import sys, urllib, webbrowser
    class GraphicsView_1(QtGui.QGraphicsView):
     
        def __init__(self, parent=None):
            super(GraphicsView_1, self).__init__(parent)
            gView = self
            self.img_url = "http://ogt.oxadi.com/content/Client-Ban.jpg"
            self.link = "http://ogt.oxadi.com/"
            self.scene = QtGui.QGraphicsScene()
            self.image = urllib.urlretrieve(self.img_url)[0]
            self.scene.addPixmap(QtGui.QPixmap(self.image))
            gView.setGeometry(QtCore.QRect(5, 30, 400, 72))
            gView.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
            gView.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
            gView.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
            gView.setObjectName("graphicsView")
            gView.setViewport(QtOpenGL.QGLWidget())
            gView.setScene(self.scene)
     
        def goURL(self):
            webbrowser.open(self.link)
     
        def mousePressEvent(self, mouseEvent):
                try:
                    self.goURL()
                except:
                    print "Couldn't open URL"
     
    if __name__ == "__main__":
        app = QtGui.QApplication(sys.argv)
        form = GraphicsView_1()
     
        form.show()
        app.exec_()
    Et voila mon setup.py :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    import sys
    assert sys.version >= '2', "Install Python 2.0 or greater"
    import sys,os, string
    from distutils.sysconfig import *
    from distutils.core import setup,Extension
    from distutils.command.build_ext import build_ext
    from distutils.command.install import install
    from distutils.command.install_data import install_data
    import py2exe
     
    ScriptNames = ["main.pyw"]
    while ScriptNames:
        setup(
    	windows=[{"script":ScriptNames.pop(),
    					"icon_resources": [(1, "data/ogt.ico")]
    	}], 
     
    	options = {"py2exe": {"compressed": 1, 
    						"optimize": 0, 
    						"bundle_files": 1, 
    						"includes":["sip","PyQt4.QtCore","PyQt4.QtGui","PyQt4.QtOpenGL","OpenGL"],					
     
    						}
    			},
    	zipfile = None
    	)
    Merci.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 99
    Par défaut
    J'ai récemment posté sur un sujet similaire: A savoir que dans mon cas c'était les icônes de mon programme qui n'étaient apparemment pas contenu dans l'exécutable généré.

    Je n'ai jamais résolu mon problème malgré de multiples tentatives et changements de méthodes d'affichage dans tout les sens. Toujours impossible d'afficher ces icônes.

    A mon avis, le soucis avec ton image est le même. Le fichier image n'est pas accessible dans ton exécutable généré par py2exe.

    Si tu trouves une solution, je suis vraiment intéressé car je pourrais sans doute en tirer une solution pour mes icônes !

  3. #3
    Membre confirmé Avatar de Mysti¢
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 155
    Par défaut
    Salut shadowsam et merci pour ta reponse.

    Certes elle n'apporte pas de solution directe a mon probleme, mais je pense que c'est une bonne piste pour continuer, car effectivement le probleme de dois pas venir d'openGL ou de ma "GraphicsView", mais sans doute de mon image ou du format dans lequel sont retournees les informations etant donne qu'elles sont recuperees via le protocol HTTP sur un serveur distant.

    Je pense que je vais essayer de generer de nouveaux executables en modifiant ma facon de proceder actuelle, par exemple en stockant l'image localement ou recuperant les donnees sous un autre format / avec un autre type de cryptage, sans doute en utilisant le module img2py ou Base64. Il doit sans doute il y avoir d'autres alternatives (pour garder la GraphicsView), sinon je regarderai surement dans les programmes de demonstration ainsi que dans la documentation, une autre facon d'afficher mon image.

    Si je trouve une solution je t'en ferais part, d'ailleurs je compte bientot utiliser des icones pour differents widgets de mon application (Barre d'outils, Liste d'elements etc...) donc je serai bientot peut-etre confronte au meme probleme.

Discussions similaires

  1. [py2exe] wxPython et py2exe -> pb de rendu
    Par bibile dans le forum Py2exe
    Réponses: 7
    Dernier message: 14/06/2008, 19h02
  2. [PyQt] [py2exe]
    Par Zorro dans le forum Py2exe
    Réponses: 2
    Dernier message: 05/05/2006, 13h36
  3. [py2exe] Impossible de charger un module...
    Par Mr Hyde dans le forum Py2exe
    Réponses: 3
    Dernier message: 28/09/2005, 17h17
  4. [py2exe] Creation Py2Exe
    Par kedare dans le forum Py2exe
    Réponses: 8
    Dernier message: 15/09/2005, 12h50
  5. wxPython + MatPlotLib + py2exe
    Par bibile dans le forum Py2exe
    Réponses: 1
    Dernier message: 05/08/2005, 22h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo