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

rasielblas Messages postés 135 Date d'inscription   Statut Membre Dernière intervention   -  
rasielblas Messages postés 135 Date d'inscription   Statut Membre Dernière intervention   -
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 135 Date d'inscription   Statut Membre Dernière intervention   9
 
Est ce quelqu'un peut m'aider s'il vous plaît!
0