Включение виджета кнопки matplotlib при нажатии, а не при отпускании - PullRequest
1 голос
/ 12 февраля 2020

Я сделал простую интерактивную фигуру matplotlib, которая использует кнопки для просмотра графиков. Минимальный пример одной такой кнопки:

import matplotlib.pyplot as plt
from matplotlib.widgets import Button

def message(_):
    print('Hello, World!')

buttonAxes = plt.axes([0.48, 0.48, 0.08, 0.08])
button = Button(buttonAxes, 'Button', color='#FFFFFF', hovercolor='#808080')
button.on_clicked(message)
plt.show()

Эта кнопка ведет себя так, как задумано, но активируется при отпускании кнопки мыши, а не при ее нажатии. Если я нажимаю на кнопку и не отпускаю кнопку мыши, message никогда не вызывается и ничего не выводится на печать. Это делает кнопки очень резкими для использования в таких случаях, как у меня.

Как заставить кнопки, подобные этим, срабатывать при нажатии? В качестве альтернативы, как создать заменяющую кнопку?

Python 3.8.1 на Windows 10.

1 Ответ

3 голосов
/ 12 февраля 2020

Вы должны использовать событие "button_press_event" с помощью метода connect_event():

button.connect_event("button_press_event", message)
...