Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将复选按钮重置为matplotlib中的原始值_Python_Matplotlib_Matplotlib Widget - Fatal编程技术网

Python 将复选按钮重置为matplotlib中的原始值

Python 将复选按钮重置为matplotlib中的原始值,python,matplotlib,matplotlib-widget,Python,Matplotlib,Matplotlib Widget,我有两个滑块、一个带有两个选项的复选框(设置为False)和一个重置按钮,如下所示: #Slider slider_M = plt.axes(rectM, facecolor=axcolor) svalueM = Slider(slider_M, 'M', s_Mmin, s_Mmax, valinit=s_Minit, valfmt="%1.2f") svalueM.on_changed(updateChart) #CheckBox ShkBox = plt.axes(rectC,f

我有两个滑块、一个带有两个选项的复选框(设置为False)和一个重置按钮,如下所示:

#Slider
slider_M = plt.axes(rectM, facecolor=axcolor)   
svalueM = Slider(slider_M, 'M', s_Mmin, s_Mmax, valinit=s_Minit, valfmt="%1.2f")
svalueM.on_changed(updateChart) 

#CheckBox
ShkBox = plt.axes(rectC,facecolor=axcolor)
CheckPar = CheckButtons(ShkBox, ('Strong', 'Weak'), (False, False)) 
CheckPar.on_clicked(updateChart)

#Reset Button
resetax = plt.axes(rectR, facecolor=axcolor)
button = Button(resetax, 'Reset', color=axcolor, hovercolor='0.975')
button.on_clicked(resetplt)
在重置例程中,我使用以下命令重置滑块和复选按钮:

def resetplt(event)
    svalueM.reset()   #Reset Slider
    CheckPar.set_active(0)  # Reset Checkbox
问题在于上面的CheckPar.set_active(0)切换第一个复选框的值。我想要的是将两个复选框重置为“False”的原始值

这在Tkinter和Java中似乎是可行的,但我无法用matplotlib实现。matplotlib文档说明如何使用

set_active(self, index)
通过索引直接(取消)激活复选按钮,其中索引是原始标签列表中的索引

不幸的是,我不知道如何实现这一点,我也找不到任何有人这样做的例子。我尝试过的事情包括:

CheckPar.set_active(0)
CheckPar.set_active(("Strong","Weak"),(0, 0))
CheckPar.set_active([0],[1])
最后两个选项会导致类型错误

TypeError: set_active() takes 2 positional arguments but 3 were given
我可以使用

status = CheckPar.get_status()
但我无法将它们重置为原始值

任何帮助都将不胜感激


谢谢

您必须知道框在其原始状态下的状态,然后遍历框,仅当当前状态与原始状态不匹配时才切换它们的状态

请参阅此测试:

def resetplt(event):
    for i, (state, orig) in enumerate(zip(CheckPar.get_status(), origState)):
        if not state == orig:
            CheckPar.set_active(i)  # switch state


fig, (ax1, ax2) = plt.subplots(1, 2)

# CheckBox
origState = (False, True)
ShkBox = plt.axes(ax1)
CheckPar = CheckButtons(ShkBox, ('Strong', 'Weak'), origState)

# Reset Button
resetax = plt.axes(ax2)
button = Button(resetax, 'Reset', color=axcolor, hovercolor='0.975')
button.on_clicked(resetplt)

plt.show()

很不错的!很好!!谢谢你的帮助。