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 :
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
#!/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()