... | ... | @@ -4,7 +4,10 @@ Correspond au code Chegodaiev.pi "version 0.2" ; le graphique "Tchegodaiev" es |
|
|
|
|
|
Cette session "G" a été ajoutée pour permettre de manipuler les widgets sur un exemple simple, sans avoir à lire un fichier ni utiliser les rééchantillonnages (une difficulté à la fois...).
|
|
|
On en profitera quand même pour ajouter une manipulation de variable globale, pour pouvoir changer la valeur d'une variable dans une fonction. Cela est à utiliser avec précaution toutefois...
|
|
|
Il s'agit bien des widgets de matplotlib, ce qui peut rendre service en phase de test sans assurer un rendu parfait... mais en s'épargnant le recours à une bibliothèque d'interface (Tkinter, PyQT ou PySide...). On signale ici qu'il existe aussi une bibliothèque iPython pour ajouter des widgets à un notebook Jupyter (non testé ici).
|
|
|
Il s'agit bien des widgets de matplotlib, ce qui peut rendre service en phase de test sans assurer un rendu parfait... mais en s'épargnant le recours à une bibliothèque d'interface (Tkinter, PyQT ou PySide...).
|
|
|
Il existe des bibliothèques tierces avec des améliorations de ces widgets, signalée [dans la rubrique Third Party Packages de MatPlotLib]https://matplotlib.org/stable/thirdpartypackages/index.html ). Pour les curseurs, on trouve ainsi: mplcursors (interactive data cursors for Matplotlib), MplDataCursor ( toolkit to provide interactive "data cursors" (clickable annotation boxes) et mpl_interactions (easy to create interactive plots controlled by sliders and other widgets), non encore testées.
|
|
|
|
|
|
On signale ici qu'il existe aussi une bibliothèque iPython pour ajouter des widgets à un notebook Jupyter (non testé ici).
|
|
|
|
|
|
:warning: si vous définissez des widgets à l'intérieur d'une fonction, ils vont fonctionner un moment, jusqu'à ce que le "garbage collector" (ramasse-miette en français) considère que ces objets ne sont pas référencés dans le "main" même si la fenêtre matplotlib est toujours ouverte, et va les supprimer. Ils seront toujours tracés, mais inactifs (non-responsive en anglais, si vous cherchez des compléments sur les forums). Il faut donc veiller à ce que leur nom soit déclaré au-dehors de la fonction, soit en le définissant comme retour de fonction, soit en créant un attribut d'un objet
|
|
|
mon_objet_qui_existe_dans_le_main.slider = mon_slider_dans_la_fonction.
|
... | ... | |