【发布时间】:2015-01-05 17:18:27
【问题描述】:
使用 Matplotlib,我可以通过“mySlider.val”获取 Slider 小部件的值,非常方便。是否有等效的功能来获取单选按钮的当前选择?我认为这个问题是this question 试图问的问题,但提问者没有提供一个可行的例子。我提供以下示例,指示我正在寻找的缺少的代码行。
from matplotlib.widgets import RadioButtons, Button, Slider
import matplotlib.pyplot as plt
axSlider = plt.axes([0.1, 0.8, 0.4, 0.05])
aSlider = Slider(axSlider,'A slider', 0,1, valinit=0.5)
axRadio = plt.axes([0.1, 0.2, 0.3, 0.4])
butRadio = RadioButtons(axRadio, ('Top','Middle','Bottom'))
axStatus = plt.axes([0.5, 0.2, 0.3, 0.4])
bStatus = Button(axStatus,'Get status of radio buttons')
def get_status(val):
#radioValue = ???? -- Need this line of code.
radioValue = 0
sliderValue= aSlider.val
print 'Slider value: %.2f, Radio button value: %.2f'%(sliderValue,radioValue)
bStatus.on_clicked(get_status)
plt.show()
这是输出的样子:
如果这是不可能的,你能建议一个优雅的解决方法吗?目前我正在为单选按钮使用“on_clicked”函数并使用单选按钮的值设置全局变量,这很混乱。
【问题讨论】:
-
如果您查看
RadioButtons的源代码,它不会记录这一点。您只需要为当前活动的按钮添加一个实例属性并在_clicked(github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/…) 中更新它,这似乎是它应该 具有的功能,并且欢迎添加它的 PR。 -
感谢您的建议!我在 widgets.py 中添加了两行代码,似乎可以实现这一目标。具体来说,我在
_clicked函数中添加了self.val = t.get_text(),在__init__函数中添加了self.val = label。我创建了 matplotlib github 的拉取请求,但这是我第一次这样做,所以希望我做得正确。谢谢!
标签: python matplotlib scipy