Bonjour,
Je définit un objet avec un QLabel et un QPixmap dans lequel je vais dessiner :
Dans l'interface de ma QMainWindow, je met une instance de mon objet preview et un bouton, quand je clique sur le bouton, il doit appeler la méthode draw de l'objet preview pour dessiner sur le canvas :
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 class preview(QGroupBox): def __init__(self, width=400, height=300): super().__init__() self.__margin = 5 self.__width = width self.__height = height self.setTitle('Preview') self.__layout = QVBoxLayout() self.setLayout(self.__layout) self.__label = QLabel() canvas = QPixmap(width, height) canvas.fill(Qt.white) self.__label.setPixmap(canvas) self.__layout.addWidget(self.__label) #self.draw(5, 5, 290, 290) def draw(self, x, y, width, height, color='black'): painter = QPainter(self.__label.pixmap()) pen = QPen() pen.setWidth(3) pen.setColor(QColor(color)) painter.setPen(pen) painter.drawRect(x, y, width, height) painter.end()
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 class myApp(QMainWindow): ''' Fenêtre principale de l'interface graphique ''' def __init__(self, parent=None): super().__init__(parent, Qt.WindowFlags()) self.__chartPreview = preview() self.__mainLayout = QVBoxLayout() self.btntest = QPushButton('Test') self.btntest.clicked.connect(self.test) self.__mainLayout.addWidget(self.__chartPreview) self.__mainLayout.addWidget(self.btntest) def test(self): self.__chartPreview.draw(5, 5, 290, 290)
Mais quand je clique sur le bouton, ça ne dessine rien. Si je met une appel à draw dans le __init__ du l'objet preview (cf. ligne en commentaire), ça me dessine bien un rectangle dans le canvas.
Qu'est ce qui cloche?
Merci,
Nico
Partager