获取Matplotlib单选按钮的状态

Dan*_*ein 5 python matplotlib scipy

使用Matplotlib,我可以使用"mySlider.val"获取Slider小部件的值,这非常方便.是否有相同的功能来获得当前选择的单选按钮?我认为这个问题是这个问题试图提出的问题,但提问者没有提供一个有效的例子.我提供了以下示例,指出我正在寻找的缺少的代码行.

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()
Run Code Online (Sandbox Code Playgroud)

这是输出的样子:

在此输入图像描述

如果这是不可能的,你能建议一个优雅的解决方案吗?目前我正在使用单选按钮的"on_clicked"功能,并使用单选按钮的值设置全局变量,这很麻烦.

Dan*_*ein 5

正如@tcaswell 所建议的,我向github 上的 matplotlib提交了一个拉取请求,现在可以查询 RadioButtons 的当前状态。缺少的代码行是:

radioValue = butRadio.value_selected
Run Code Online (Sandbox Code Playgroud)

计划将其合并到 matplotlib 的 1.5.x 版本中。同时,如果你想使用这个功能,你需要从 github下载matplotlib的开发版本(或者,至少下载 'widgets.py' 文件)。

现在已将其合并到 Matplotlib (1.5.3) 的当前版本中。(请参阅Widets 文档。)如果上面的这行不起作用,您可能只需更新 Matplotlib。