Создание нового значка панели инструментов и функции с помощью tkinter/matplotlib

Я хочу добавить линейку в графический интерфейс, созданный с помощью tkinter и matplotlib. Там уже есть пользовательская панель инструментов, но в настоящее время она использует только инструменты, которые уже предоставлены:

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 с "двойной границей" в качестве текущей выбранной метки (темно-розовой, если она не выбрана).

Изображение инструмента с графическим интерфейсом

Итак, на github был создан инструмент линейки: https://github.com/terranjp/matplotlib-tools

И я нашел пару тесно связанных статей: создайте значок: добавьте значок кнопки на панели инструментов, другой метод matplotlib для пользовательской панели инструментов: http://dalelane.co.uk/blog/?p=778

Я не уверен, как реализовать кнопку / инструмент в среде графического интерфейса. Любое направление здесь будет с благодарностью.

0 ответов

Другие вопросы по тегам