Я хочу добавить линейку в графический интерфейс, созданный с помощью 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
Я не уверен, как реализовать кнопку / инструмент в среде графического интерфейса.Любое направление здесь будет с благодарностью.