matplotlib按钮颜色仅在移动鼠标后更新

时间:2014-04-19 07:47:52

标签: python button colors matplotlib widget

当我更改按钮的颜色时,它不会更新颜色,直到我移动鼠标,这对我的应用来说非常烦人... 这个更新可以被强制吗?也许通过生成鼠标事件或其他什么? (感觉就像一个肮脏的把戏......) 这是我正在使用的(简化代码):

%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')

1 个答案:

答案 0 :(得分:0)

我有同样的问题。如果查看maptplotlib \ Widgets.py中的Button源代码,您将看到只要鼠标悬停在按钮上方,它将显示悬停颜色。因此,如果您需要在鼠标悬停在按钮上方时更改按钮的颜色,则必须禁用/屏蔽此行为。我很懒,所以我只创建了按钮,其悬停颜色与单击按钮时的颜色相同。例如,如果单击后我的按钮将变为绿色,则将按钮创建为Button(ax,“ my button”,hovercolor ='g')。然后,在on_clicked事件处理函数中,执行myButton.color ='g'并调用fig.canvas.draw()强制进行更改。 我相信还有很多其他更优雅的方法可以解决这个问题。