Я добавил виджет в панель инструментов matplotlib под названием «Выбор точек», который позволяет мне выбрать группу точек в окне моей фигуры и записать их в файл. Это отлично работает. Однако, если мне раньше приходилось увеличивать масштаб или перемещаться по области интереса, прежде чем нажимать кнопку виджета на панели инструментов, режимы масштабирования или панорамирования остаются активными, и я не могу выбрать свои точки с помощью кнопки виджета, пока я не нажму кнопку увеличения /Поверните кнопки на панели инструментов снова, чтобы отключить эти режимы. Есть ли способ программно выйти из режима масштабирования или панорамирования при нажатии кнопки моего виджета? Это небольшая боль, но приятная особенность, которую я хотел бы иметь.
Я попытался просмотреть все методы plt.gcf (). Canvas и не могу найти, где можно выбрать / отменить выбор режимов панели инструментов из моего кода.
--ЧАСТЬ КОДА, КОТОРЫЕ СВЯЗЫВАЕТСЯ КНОПКУ ИНСТРУМЕНТОВ WIDGET ВЫЗЫВАЕТСЯ «ВЫБРАТЬ ТОЧКИ» К КЛАССУ getPoints ---
# Get figure handles
figNum = plt.gcf()
ax = plt.gca()
pts = ax.collections[-1]
# Route 'Select Points' button to matplotlib figure window
fig1.canvas.manager.toolmanager.add_tool('Select Points', getPoints, figNum = figNum, ax = ax, pts = pts, outPath = outPath, origTitle = origTitle)
fig1.canvas.manager.toolbar.add_tool('Select Points', 'navigation', 3)
--- getPoints CLASS ---
class getPoints(ToolToggleBase):
default_toggled = False
def __init__(self, *args, figNum, ax, pts, outPath, origTitle, **kwargs):
# Initialize base variables
self.figNum = figNum
self.ax = ax
self.pts = pts
self.outPath = outPath
self.origTitle = origTitle
# Call super-initialized variables
super().__init__(*args, **kwargs)
def enable(self, *args, **kwargs):
# Get inputs for getPlotPts function
figNum = self.figNum
ax = self.ax
pts = self.pts
outPath = self.outPath
origTitle = self.origTitle
onState = True
# Call getPlotPts function
getPlotPts(self, figNum, ax, pts, outPath, origTitle, onState)
def disable(self, *args, **kwargs):
# Get inputs for getPlotPts function
figNum = self.figNum
ax = self.ax
pts = self.pts
outPath = self.outPath
origTitle = self.origTitle
onState = False
# Call getPlotPts function
getPlotPts(self, figNum, ax, pts, outPath, origTitle, onState)