Intéraction PyQT et MatplotLib - Python - Programmation
Marsh Posté le 27-08-2007 à 17:12:23
Bon, j'ai vu que beaucoup de monde avait lu mon pb mais il semble trop pointu et personne n'a trouvé. Donc j'abandonne matplotlib pour me consacrer à PyQWT (librairie plot faite pour qt) => http://pyqwt.sourceforge.net
Merci à tous.
Marsh Posté le 06-01-2008 à 21:57:25
Bonjour,
Je ne suis pas en mesure d'apporter une solution à ton problème (il est de toute façon certainement trop tard !), mais je serai très intéressé que tu nous exposes brièvement ton retour d'expérience sur l'utilisation de PyQwt pour afficher des graphes (2D ou 3D avec PyQwt3D ?) dans une IHM programmée avec la librairie Qt.
En effet, de mon côté, je découvre à peine le développement d'applications scientifiques avec Python (que je souhaite utiliser pour remplacer MATLAB et IDL). Et d'après mes recherches sur le net, PyQt semble la meilleure librairie d'IHM actuellement (juste devant wxPython, qui est paraît-il moins performante, moins complète et moins documentée). Je comptais donc beaucoup sur l'utilisation de matplotlib avec PyQt pour intégré des graphes 2D et 3D dans des IHM.
Merci d'avance, et bonne continuation,
PR
Marsh Posté le 08-03-2008 à 16:16:59
Moi aussi, je me suis lancé dans la programmation avec python et pyQt4 pour avoir un équivalent libre à Matlab.
J'ai fait un petit programme en m'inspirant de wxCursor_demo que l'on trouve sur le site Matplotlib dans la section embedded.
Le premier fichier est issu de QtDesigner
Code :
|
Dans ce deuxième fichier, j'utilise un vboxlayout pour afficher la courbe et un vboxlayout pour afficher la barre de gestion Matplotlib.
Pour l'instant, les évènements récupérés permettent de gérer l'affichage des coordonnées du curseur dans la status bar.
Le gestionnaire d'évènement est celui de Matplotlib au travers de la commande suivante:
Code :
|
Listing du fichier principal:
Code :
|
La suite sera de m'inspirer de la bibliothèque wxmpl pour gérer de manière autonome le zoom. Mais je suis débutant en python wxPython et pyQt donc cela risque de me prendre un peu de temps.
Marsh Posté le 05-04-2008 à 20:44:05
PRayb a écrit : Bonjour, |
Désolé de répondre si tard, je n'étais pas revenu ici depuis un bon bout de temps. Mais un MP m'aurait rappelé à mes obligations
Pour résumer ben l'implémentation de Qwt est hyper-simple. Un objet Qwt est vu comme un widget donc il suffit en final d'intégrer la widget Qwt dans l'élément Qt (généralement dans un layer quelconque) et puis roule.
D'ailleurs Qwt est tellement lié à Qt que la version windows offre PyQt + PyQwt ensemble => http://www.riverbankcomputing.com/ [...] .3.3-2.exe
Si ça intéresse quelqu'un, je peux lui passer le source de mon projet. Je l'ai d'ailleurs déjà passé à Harkonen et à d'autres du fofo Qtfr http://forum.qtfr.org
Marsh Posté le 14-01-2009 à 13:21:17
Je serais intéressé par ton projet voir d'autres si tu en as qui tournent autour des représentations graphiques en Math.
Sais-tu s'il est possible d'utiliser la souris avec PyQwt ?
Marsh Posté le 23-08-2007 à 22:11:26
Bonjour à tous
Je commence à bosser avec MatPlotLib (http://matplotlib.sourceforge.net) qui est une librairie pour générer des graphiques mais j'ai un mal fou à le faire tourner avec PyQT. J'ai l'impression qu'il y a une sale intéraction entre le gestionnaire d'évènements PyQT et le gestionnaire d'évènements MatPlotLib... ou alors j'ai pas encore compris comment bien intégrer un graphique MatPlotLib dans des widgets QT.
J'ai pu voir avec divers exemples que MatPlotLib contient un objet "FigureCanvas" qui peut être intégré comme widget dans QT. Quand on utilise cette méthode, on ne passe plus par le gestionnaire d'évènements MatPlotLib car c'est QT qui prend tout en charge. Mais la fenêtre qui apparaît n'est plus celle qui apparait quand on tape directement les ordres Pylab (il n'y a plus de menu pour zoomer, etc).
J'ai eu un autre exemple où c'est dans MatPlotLib qu'on pouvait intégrer des QObject mais dans ce cas là, cela signifie qu'il faut utiliser MatPlotLib pour faire toute l'application et probablement donc ne plus passer par une QApplication.
A titre d'exemple, j'a écrit un tout petit programme PyQT qui affiche 2 boutons
1) la fenêtre n'est donc pas une fenêtre typique de matplotlib (il n'y a pas le menu classique qui permet de déplacer/zoomer/sauvegarder
2) l'intéraction bouton <=> affichage/masquage de chaque courbe est moyenne => il est nécessaire de a) cliquer sur le bouton et b) cliquer dans le graphique pour que l'action se passe
Voici le code
J'ai cherché de partout mais j'arrive pas à trouver une bonne doc expliquant bien comment intégrer matplotlib dans une application. La doc de matplotlib est bourrée d'exemples mais chaque exemple est écrit comme un programme unique se finissant par un show() final et aucun n'est vu comme un élément pouvant être intégré dans un ensemble plus vaste.
Si quelqu'un pouvait m'aider ce serait sympa. Sinon j'ai vu que d'autres librairies de plotting existent comme veusz ou bien gnuplot ou bien chaco qui a l'air toute nouvelle (http://code.enthought.com/chaco)...
PS: Je bosse avec PyQT issu de QT3 et Python2.4 (et avant que tous les boulettos du monde viennent me dire que Python2.5 + QT4 sont sortis depuis des lustres, je précise que je travaille avec plusieurs systèmes dont un vieux solaris de 1996 et que j'ai pas réussi à compiler QT4 sur ce système donc je peux pas me disperser à bosser sur plusieurs versions de QT)
Voilà. Merci à ceux qui peuvent m'aider... et merci à ceux qui le voudraient mais qui ne savent pas comment
Message édité par Sve@r le 23-08-2007 à 22:56:14
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.