Используя Matplotlib, я могу получить значение виджета Slider с помощью «mySlider.val», что очень удобно. Есть ли эквивалентная возможность получить текущий выбор кнопки Radio? Я думаю, что этот вопрос - это то, что пытался спросить this question, но искатель не представил рабочий пример. Я предоставляю следующий пример, указывающий на недостающую строку кода, которую я ищу.Получить статус переключателя Matplotlib
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» для кнопок «Radio Buttons» и устанавливаю глобальные переменные со значениями переключателей, и это грязно.
Если вы посмотрите на исходный код для 'RadioButtons' не следить за этим. Вам просто нужно добавить атрибут экземпляра для текущей активной кнопки и обновить его в '_clicked' (https://github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/widgets.py#L610). Это похоже на особенность, которую он должен был иметь, и PR, чтобы добавить его, было бы очень желанным. – tacaswell
Спасибо за предложение! Я добавил две строки кода в widgets.py, которые, похоже, достигают этой цели. В частности, я добавил 'self.val = t.get_text()' к функции '_clicked' и' self.val = label' функции '__init__'. Я создал запрос на перенос matplotlib github, но это первый раз, когда я это сделал, поэтому, надеюсь, я сделал это правильно. Благодаря! – DanHickstein