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 :

[PyQt] QImage


Sujet :

PyQt Python

  1. #1
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 476
    Points : 1 785
    Points
    1 785
    Par défaut [PyQt] QImage
    Bonjour à tous
    Voila je viens de telecharger la version non commerciale de pyqt en vue de refaire une interface que j'ai fait en tkinter. J'ai utilisé QT designer pour dessiner l'interface et pyuic pour la transformer en fichier python. L'interface contient divers widgets (checkbox, boutton, radio...) et jusque la pas de problème.
    Mon problème est apparu quand j'ai voulu afficher une image. Avec QT designer j'avais dessiné des zones "pixmap" qui sont en fait des QLabel auxquels on peut associer des objets QPixmap par l'intermediaire de la methode setPixmap(). Mais Qpixmap ne permet pas de choisir quel pixel de la zone je veut allumer et avec quelle couleure. J'ai remarqué que la classe QImage permet de le faire avec sa méthode setPixel(x,y,qRgb) mais je ne sais pas comment placer/associer une QImage avec un Widgets... donc jusqu'a maintenant j'essaye de transformer ma QImage en QPixmap afin de l'afficher dans un QLabel (je suis d'accord c'est le bordel ) et ça ne marche pas non plus...

    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
     
    #Boite de dialogue principale
     
    def __init__(self,parent = None,name = None,modal = 0,fl = 0):
            QDialog.__init__(self,parent,name,modal,fl)
     
    ....
    #declaration dun pixmap
    self.image1=QPixmap()
     
    #declaration dune image 320x240 avec 8bits/composante RGB
    im=QImage(320,240,8)
     
    #declaration d'une couleure r,g,b = blanc
    qc=qRgb(255,255,255)
     
    #je met 1 ou plusieurs pixels en blanc (pour voir si ça a fonctionné)
     
    im.setPixel(25,25,qc)
     
    #je met charge le pixmap avec l'image
     
    self.image11.convertFromImage(im)
     
    #je crée un QLabel
     
    self.Pixmap_Cam11 = QLabel(self.Frame18,'Pixmap_Cam11')
    self.Pixmap_Cam11.setGeometry(QRect(10,10,320,240))
     
    #et je lui associe le pixmap image1
     
    self.Pixmap_Cam11.setPixmap(self.image1)
     
    ...
    Donc voila la question est : Comment afficher un Qimage ou tout autre classe equivalente dans un widgets et pouvoir accéder aux pixels par leurs coordonnées et de changer leur couleure??

  2. #2
    Membre chevronné Avatar de Jbx 2.0b
    Homme Profil pro
    Développeur C++/3D
    Inscrit en
    Septembre 2002
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur C++/3D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2002
    Messages : 476
    Points : 1 785
    Points
    1 785
    Par défaut
    En parcourant de fond en comble le web ( les articles sur pyqt sont assez peu nombreux ) j'ai trouvé 1 solution, je ne sais pas ce qu'elle vaut, mais si quelqu'un a mieux je suis preneur :

    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
    36
    37
    38
    39
    40
     
    classdQLabel(QLabel):
     
     
        def __init__(self,parent = None,name = None):
            QLabel.__init__(self,parent,name)
            self.buffer = QPixmap()
     
        def paintEvent(self, ev):
            # blit the pixmap
            bitBlt(self, 0, 0, self.buffer)
     
        def draw(self,im):
            self.p=QPainter()
            self.p.begin(self.buffer)
     
            i=0
            j=0
            while i<im.sizeX:
                while j<im.sizeY:
                    r,g,b = im.getpixel((i,j))
                    qc=QColor(r,g,b)
                    self.p.setPen(qc)
                    self.p.drawPoint(i,j)
     
                    j+=1
                j=0
                i+=1
     
     
            self.p.flush()
            self.p.end()
            bitBlt(self, 0, 0, self.buffer)
     
        def resizeEvent(self, ev):
            tmp = QPixmap(self.buffer.size())
            bitBlt(tmp, 0, 0, self.buffer)
            self.buffer.resize(ev.size())
            self.buffer.fill()
            bitBlt(self.buffer, 0, 0, tmp)
    Certains points sont encore obscur mais ça fonctionne. Le plus bizard c'est que la fonction resizeEvent() soit redefinie pour que ça fonctionne. L'exemple viens de http://www.opendocspublishing.com/pyqt/x2765.htm
    .
    J'ai juste defini une fonction draw() qui defini l'image que je veut afficher dans le dQLabel()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PyQt] [py2exe]
    Par Zorro dans le forum Py2exe
    Réponses: 2
    Dernier message: 05/05/2006, 13h36
  2. [PyQt] QComboBox
    Par taurus-le-bien-aime dans le forum PyQt
    Réponses: 5
    Dernier message: 12/01/2006, 22h58
  3. [PyQt] Mon appli se fige avec les sockets
    Par neeux dans le forum PyQt
    Réponses: 3
    Dernier message: 08/01/2006, 21h57
  4. Réponses: 1
    Dernier message: 28/11/2005, 23h20
  5. [PyQt] Qt Designer et Qpixmap
    Par parp1 dans le forum PyQt
    Réponses: 2
    Dernier message: 17/06/2005, 12h04

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