58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Created on Tue Mar 23 15:56:31 2021
|
|
|
|
@author: angoosh
|
|
"""
|
|
|
|
import matplotlib
|
|
matplotlib.use('GTK3Agg') # or 'GTK3Cairo'
|
|
import matplotlib.pyplot as plt
|
|
|
|
import gi
|
|
gi.require_version('Gtk', '3.0')
|
|
from gi.repository import Gtk
|
|
|
|
|
|
fig, ax = plt.subplots()
|
|
ax.plot([1, 2, 3], 'ro-', label='easy as 1 2 3')
|
|
ax.plot([1, 4, 9], 'gs--', label='easy as 1 2 3 squared')
|
|
ax.legend()
|
|
|
|
manager = fig.canvas.manager
|
|
# you can access the window or vbox attributes this way
|
|
toolbar = manager.toolbar
|
|
vbox = manager.vbox
|
|
|
|
# now let's add a button to the toolbar
|
|
button = Gtk.Button(label='Click me')
|
|
button.show()
|
|
button.connect('clicked', lambda button: print('hi mom'))
|
|
|
|
toolitem = Gtk.ToolItem()
|
|
toolitem.show()
|
|
toolitem.set_tooltip_text('Click me for fun and profit')
|
|
toolitem.add(button)
|
|
|
|
pos = 8 # where to insert this in the toolbar
|
|
toolbar.insert(toolitem, pos)
|
|
|
|
# now let's add a widget to the vbox
|
|
label = Gtk.Label()
|
|
label.set_markup('Drag mouse over axes for position')
|
|
label.show()
|
|
vbox.pack_start(label, False, False, 0)
|
|
vbox.reorder_child(toolbar, -1)
|
|
|
|
def update(event):
|
|
if event.xdata is None:
|
|
label.set_markup('Drag mouse over axes for position')
|
|
else:
|
|
label.set_markup(
|
|
f'<span color="#ef0000">x,y=({event.xdata}, {event.ydata})</span>')
|
|
|
|
fig.canvas.mpl_connect('motion_notify_event', update)
|
|
|
|
plt.show()
|