J'ai suivi un tutoriel dans le livre de Benjamin Root "Applications interactives utilisant Matplotlib" pour sous-classer la méthode format_coord() d'un axe d'image matplotlib. Ça marche. J'ai une application gui dans laquelle main.py importe le pointeur de données et l'utilise pour modifier les nombres interactifs affichés lorsque je déplace la souris sur l'image.pass param à sub_classed format_coord dans matplotlib
from gui_stuff.datapointer import DataPointerLeftCart
et il est utilisé en appelant:
self.ax_lhs = self.f_lhs.add_subplot(111,projection = 'sp_data_pointer')
le code dépouillé pour DataPointerLeftCart est défini comme suit dans un fichier séparé:
import matplotlib.projections as mproj
import matplotlib.transforms as mtransforms
from matplotlib.axes import Axes
import matplotlib.pyplot as plt
#Our own modules
from operations.configurations import configParser
class DataPointerLeftCart(Axes):
name = 'sp_data_pointer'
def format_coord(self, y, z):
configparams = configParser(ConfigFile=configfilename)
centreY = float(configparams['CENTRE_Y'])#units are pixels
scale = float(configparams['SCALE'])#nm^-1 per pixel
new_qy = (y-(centreY))*scale
return "Qy: %f (nm^-1)" % (new_qy)
mproj.projection_registry.register(DataPointerLeftPol)
ConfigParser() est une fonction qui lit un fichier texte et crée un dictionnaire avec divers numéros de configuration importants pour mon programme. A l'origine, cela n'avait pas d'arguments et configParser a spécifié l'emplacement du fichier texte, mais récemment j'ai modifié le programme entier afin que vous spécifiiez une copie locale du fichier de configuration. Cela nécessite que je puisse passer un argument configfilename. Cependant, je suis confus sur la façon de le faire. Le fichier configfilename doit provenir de main.py mais ici, je ne donne que le nom 'sp_data_pointer' comme argument au fichier add_subplot.
Cela me source de confusion car il n'y a nulle part (visible dans mon code) où je crée une instance de la classe et sans doute la « initialisation » méthode est pris en charge à l'intérieur des axes que je le sous-classement. Quelqu'un pourrait-il expliquer les principes et/ou une solution de contournement sale pour me faire bouger (préférable à la fois!)
Merci j'ai utilisé la première méthode et cela a fonctionné comme un charme! – MikeS