当我更改按钮的颜色时,它不会更新颜色,直到我移动鼠标,这对我的应用来说非常烦人... 这个更新可以被强制吗?也许通过生成鼠标事件或其他什么? (感觉就像一个肮脏的把戏......) 这是我正在使用的(简化代码):
%pylab
from matplotlib.widgets import Slider, Button
fig = plt.figure()
def slCallb(val):
myButton.color = '{0}'.format(val)
myButton.canvas.draw() #only updates after moving the mouse
fig.canvas.draw() #redundant?
axSl = plt.axes([0.1, 0.1, 0.8, 0.02])
mySlider = Slider(axSl, 'slider', 0.0, 1.0, color = '#FF0000')
mySlider.on_changed(slCallb)
axBu = plt.axes([0.2, 0.5, 0.1, 0.075])
myButton = Button(axBu, 'button')
答案 0 :(得分:0)
我有同样的问题。如果查看maptplotlib \ Widgets.py中的Button源代码,您将看到只要鼠标悬停在按钮上方,它将显示悬停颜色。因此,如果您需要在鼠标悬停在按钮上方时更改按钮的颜色,则必须禁用/屏蔽此行为。我很懒,所以我只创建了按钮,其悬停颜色与单击按钮时的颜色相同。例如,如果单击后我的按钮将变为绿色,则将按钮创建为Button(ax,“ my button”,hovercolor ='g')。然后,在on_clicked事件处理函数中,执行myButton.color ='g'并调用fig.canvas.draw()强制进行更改。 我相信还有很多其他更优雅的方法可以解决这个问题。