使用tkinter / matplotlib创建新的工具栏图标和功能

时间:2018-12-01 20:48:33

标签: python-3.x matplotlib tkinter tkinter-canvas matplotlib-widget

我想向使用tkinter和matplotlib创建的gui添加标尺。已经有一个自定义工具栏,但目前仅使用已提供的工具:

class CustomToolbar(NavigationToolbar2TkAgg):
"""
A custom Matplotlib toolbar that allows for a lasso selection when no tool is selected
"""
def __init__(self, canvas_, parent_, edit_frame, app):
    self.parent_frame = parent_
    self.edit_frame = edit_frame
    self.toolitems = (
        ('Home', "Reset zoom", 'home', 'home'),
        ('Back', 'Undo one zoom step', 'back', 'back'),
        ('Forward', 'Redo one zoom step', 'forward', 'forward'),
        (None, None, None, None),
        (None, None, None, None),
        (None, None, None, None),
        ('Pan', 'Activate pan', 'move', 'pan'),
        ('Zoom', 'Activate zoom', 'zoom_to_rect', 'zoom'),
        # ("Lasso", "Activate lasso", "hand", "lasso")
    )
    self.app = app
    NavigationToolbar2TkAgg.__init__(self, canvas_, parent_)

def pan(self):
    NavigationToolbar2TkAgg.pan(self)
    if self._active:
        self.edit_frame.config(background='white', text='Pan')
    else:
        self.edit_frame.config(background='red', text='Draw')
        self.app.change_class()

def zoom(self):
    NavigationToolbar2TkAgg.zoom(self)
    if self._active:
        self.edit_frame.config(background='white', text='Zoom')
    else:
        self.edit_frame.config(background='red', text='Draw')
        self.app.change_class()

如果“平移”或“缩放”未选中,则使用绘图工具作为套索。套索用于选择要标记的区域,然后在右侧图像上显示为标记。这是GUI的图像,其中“双边界”作为当前选定的标签(未选定时为深粉红色)。

Image of GUI tool

因此,有人在github上创建了一个标尺工具:https://github.com/terranjp/matplotlib-tools

我发现了几篇密切相关的文章: 创建图标:Add toolbar button icon matplotlib 自定义工具栏的其他方法:http://dalelane.co.uk/blog/?p=778

我不确定如何在GUI环境中实现按钮/工具。在这里的任何方向将不胜感激。

0 个答案:

没有答案