Partage
  • Partager sur Facebook
  • Partager sur Twitter

[PyQt] Dessin Widget et QMainWindows

Sujet résolu
    12 février 2013 à 14:43:54

    Bonjour,

    J'utilise la bibliothèque PyQt pour réaliser une IHM.

    Dans un exemple simple j'essaye d'afficher un dessin (généré grâce à QPainter) et deux boutons.

    Le dessin est dans la classe plan, il est ensuite ajouter dans le classe conteneur qui est elle enfin affiché avec centralWidget.

    Problème : le dessin ne s'affiche pas, les deux boutons eux s'affichent correctement.

    Merci d'avance

    Voici le code :

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    import sys, random
    from PyQt4 import QtGui, QtCore
    
    class MainWindow(QtGui.QMainWindow):
        
        def __init__(self):
            super(MainWindow, self).__init__()
            self.c=Conteneur()
            
            self.setCentralWidget(self.c)
    
            self.move(300,300)
            self.show()
    
    
    class Conteneur(QtGui.QWidget):
        def __init__(self):
            super(Conteneur, self).__init__()
    
            self.p=Plan()
            self.okButton = QtGui.QPushButton("OK")
            self.cancelButton = QtGui.QPushButton("Cancel")
    
            hbox = QtGui.QHBoxLayout()
            hbox.addStretch(1)
            hbox.addWidget(self.p)
            hbox.addWidget(self.okButton)
            hbox.addWidget(self.cancelButton)
        
            self.setLayout(hbox)
            
            
    class Plan(QtGui.QWidget):
        
        def __init__(self):
            super(Plan, self).__init__()
    
        def paintEvent(self, e):
    
            qp = QtGui.QPainter()
            qp.begin(self)
            self.drawPoints(qp)
            qp.end()
            
        def drawPoints(self, qp):
          
            qp.setPen(QtCore.Qt.red)
            size = self.size()
            
            for i in range(1000):
                x = random.randint(1, size.width()-1)
                y = random.randint(1, size.height()-1)
                qp.drawPoint(x, y)     
           
            
    def main():
        
        app = QtGui.QApplication(sys.argv)
        ex = MainWindow()
        sys.exit(app.exec_())
    
    
    if __name__ == '__main__':
        main()    
    



    • Partager sur Facebook
    • Partager sur Twitter
      13 février 2013 à 19:10:16

      Solution trouvée,

      Il faut ajouter une taille à plan avec self.setMinimumSize(300, 300) ou setFixedSize(300,300) par exemple.

      • Partager sur Facebook
      • Partager sur Twitter

      [PyQt] Dessin Widget et QMainWindows

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown