Insérer le graphe 3D matplotlib dans un canvas et dans un layout

Fermé
rasielblas Messages postés 140 Date d'inscription jeudi 20 mars 2014 Statut Membre Dernière intervention 12 mai 2021 - Modifié le 27 févr. 2020 à 13:23
rasielblas Messages postés 140 Date d'inscription jeudi 20 mars 2014 Statut Membre Dernière intervention 12 mai 2021 - 29 févr. 2020 à 09:23
Bonjour,

J'ai un code qui permet d'afficher un graphe 3d en matplotlib est mon code marche très bien, est lorsque je défile le graphe avec le souris l'image 3D change bien de position:

from PyQt5.QtWidgets import QApplication, QMainWindow
import sys
from PyQt5.QtWidgets import *
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

class Fenetre(QMainWindow):
    def __init__(self):
        super(Fenetre, self).__init__()
        self.setWindowTitle("Mon fenetre")
        self.resize(500,500)
        self.test()

    def test(self):
        fig = plt.figure()
        ax = fig.add_subplot(111, projection='3d')
        plt.show()

app=QApplication.instance()
if not app:
    app=QApplication(sys.argv)
fenetre=Fenetre()
fenetre.show()
app.exec_()



comme montre le figure ci-dessous:





Mais lorsque je met l'image 3D dans un canvas et lorsque je charge le canvas dans un layout alors l'image 3d s'affiche mais lorsque je le position avec le souris alors l'image reste statique, sa position ne change plus, le souris ne peut plus changer la position de l'image, alors je demande votre aide, je ne sais pas ce qui manque dans mon code:

import sys
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from PyQt5.QtWidgets import *
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import pyplot as plt

class Fenetre(QMainWindow):
    def __init__(self):
        super(Fenetre, self).__init__()
        self.setWindowTitle("Mon fenetre")
        self.resize(500,500)
        self.test()

        centralWidget=QWidget()
        layout=QVBoxLayout()

        layout.addWidget(self.canvas)
        centralWidget.setLayout(layout)
        self.setCentralWidget(centralWidget)

    def test(self):
        self.canvas=Graph()
        self.show()

class Graph(FigureCanvas):
    def __init__(self):
        fig = plt.figure()
        ax = fig.add_subplot(111, projection='3d')

        FigureCanvas.__init__(self,fig)


app=QApplication.instance()
if not app:
    app=QApplication(sys.argv)
fenetre=Fenetre()
fenetre.show()
app.exec_()



J'ai beau chercher partout mais sans succès et votre demande votre aide s'il vous plait. Merci!
A voir également:

1 réponse

rasielblas Messages postés 140 Date d'inscription jeudi 20 mars 2014 Statut Membre Dernière intervention 12 mai 2021 9
29 févr. 2020 à 09:23
Est ce quelqu'un peut m'aider s'il vous plaît!
0