我有以下代码示例。当我按下按钮时,颜色会发生变化。但是只有在我移动鼠标之后。我可以以某种方式直接调用绘图函数吗?
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
def toggle(_):
button.status ^= True
color = [0, 1, 0] if button.status else [1, 0, 0]
button.color = color
button.hovercolor = color
# Stuff that doesn't work...
plt.draw()
button.canvas.draw()
plt.gcf().canvas.draw()
button = Button(plt.axes([.1, .1, .8, .8]), 'Press me')
button.status = True
button.on_clicked(toggle)
plt.show()
答案 0 :(得分:1)
我确信有一种“官方”方式可以做你想做的事情,但这里有一个模拟鼠标动作事件的黑客将触发重绘。在button.canvas.motion_notify_event(0,0)
末尾添加toggle()
,以便您的代码如下所示:
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
def toggle(_):
button.status ^= True
color = [0, 1, 0] if button.status else [1, 0, 0]
button.color = color
button.hovercolor = color
button.canvas.motion_notify_event(0,0)
button = Button(plt.axes([.1, .1, .8, .8]), 'Press me')
button.status = True
button.on_clicked(toggle)
plt.show()