我在matplotlib工具栏中添加了一个名为“选择点”的小部件,它允许我在图形窗口中选择一组点并将它们写入文件。这很好用。但是,如果我以前必须在单击工具栏上的小部件按钮之前缩放或平移到我感兴趣的区域,缩放或平移模式保持活动状态,除非我手动单击缩放/平移,否则我无法使用小部件按钮选择点。工具栏上的平移按钮来取消激活这些模式。当我的小部件按钮被点击时,有没有一种方法可以通过编程方式退出缩放或平移模式?这是一个小麻烦,但我想拥有的一个很好的功能。
我试过查看所有plt.gcf().canvas方法,但似乎找不到在代码中选择/禁用工具栏模式的位置。
- 将名为“选择点”的工具栏小工具按钮链接到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 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)
型
1条答案
按热度按时间bakd9h0s1#
我认为你在这里所追求的是工具栏的pan()和zoom()方法,当你点击这些按钮时会调用它们。如果你获得了工具栏的引用
tbar
,那么你可以调用这些方法:字符串
这些方法实现了一个切换,因此重复调用将再次关闭它们。