Если ваша цель состоит в использовании widget.Button
для каждого подзаголовка, то ситуация очень проста. Чтобы создать кнопку, вам необходимо передать ей экземпляр Axes
, и кнопка займет это пространство. Поэтому вам нужно создать столько новых осей, сколько у вас есть подзаголовки, и соответственно указать их координаты. Затем создайте свои кнопки, которые могут иметь разные функции обратного вызова.
, например:
from matplotlib.widgets import Button
def callback1(event):
print "you've clicked button 1"
def callback2(event):
print "you've clicked button 2"
fig = plt.figure()
ax1 = plt.subplot2grid((2,2),(0, 0))
ax2 = plt.subplot2grid((2,2),(1,1))
# create axes to receive the buttons
# adjust the coordinates to suit your needs
# coordinates are [left, bottom, width, height]
b1ax = plt.axes([0.5, 0.8, 0.2, 0.1])
b1 = Button(b1ax, 'Button 1')
b1.on_clicked(callback1)
b2ax = plt.axes([0.7, 0.5, 0.2, 0.1])
b2 = Button(b2ax, 'Button 2')
b2.on_clicked(callback2)
plt.show()
документация для widget.Button
: http://matplotlib.org/api/widgets_api.html#matplotlib.widgets.Button
пример реализации: http://matplotlib.org/examples/widgets/buttons.html
Вы, возможно, могли бы обернуть функцию, а затем подсчитать количество времени, которое вы уже выполняют функцию. С помощью этой информации вы могли бы вызвать другой обратный вызов? – iFlo
Thnx для ответа, У вас есть пример, пожалуйста? –
Я не думаю, что это возможно, но вы могли бы сделать это в два этапа: функция обратного вызова вычисляет из Ax (subplot) событие, которое было создано, и на основе этого вызывает вторую функцию, отличающуюся для каждой из подзаговоры. Все зависит от того, какое событие вы заинтересованы в обработке –