Я следовал учебнику в книге Бенджамина Рута «Интерактивные приложения с использованием Matplotlib» для подкласса метода format_coord() осей изображения matplotlib. Оно работает. У меня есть приложение gui, в котором main.py импортирует указатель данных и использует его для изменения интерактивных номеров, отображаемых при перемещении мыши над изображением.pass param для sub_classed format_coord в matplotlib
from gui_stuff.datapointer import DataPointerLeftCart
, а затем он используется по телефону:
self.ax_lhs = self.f_lhs.add_subplot(111,projection = 'sp_data_pointer')
раздели вниз код DataPointerLeftCart определяется следующим образом в отдельном файле:
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() является функцией который читает текстовый файл и создает словарь с различными важными номерами конфигурации для моей программы. Первоначально у этого не было аргументов, и configParser указывал местоположение текстового файла, но недавно я изменил всю программу, чтобы указать локальную копию файла конфигурации. Это требует от меня возможности передать аргумент configfilename. Однако я смущен тем, как это сделать. Имя configfilename должно поступать из main.py, но здесь я указываю только имя sp_data_pointer в качестве аргумента add_subplot.
Это сбивает с толку меня, так как нет нигде (видимо в моем коде), где я создаю экземпляр класса и предположительно метод «INIT» позаботятся внутри осей, которые я подклассов. Может ли кто-нибудь объяснить принципы и/или грязное обходное решение, чтобы заставить меня двигаться (предпочтительнее обоих!)
Спасибо Я использовал первый метод, и он работал как шарм! – MikeS