0

有没有办法在 matplotlib 中设置 CheckButtons 的逻辑状态并触发onclick()回调?

这是我的场景:

我正在显示一个包含大量跟踪(50+)的图表,并希望让用户可以选择根据一些固定查询显示其中的一个子集,用户通过CheckButton. 每次单击按钮时,脚本都会CheckButton通过 获取所有 present 的状态get_status(),计算符合所选标准的迹线的索引,并相应地更新显示。

为了让用户的生活更轻松,我还希望有一个“全选”和“全部清除”按钮。我能想出的实现这些的最佳方法是在不触发on_click()回调的情况下强制所有 CheckButtons 的逻辑状态为 True 或 False,然后相应地设置跟踪的可见性。

但是,CheckButton()没有set_status()方法 https://matplotlib.org/api/widgets_api.html#matplotlib.widgets.CheckButtons

有一种方法,但根据文档,如果为真 set_active(),它会触发回调。eventson

有人可以给我一些指示如何去做吗?我是否需要eventson=False为 wdget 设置,然后再set_active()=True设置eventson=True?看起来相当笨重,但我想不出更优雅的方式,即使花了太多时间。

谢谢!

4

1 回答 1

1

我知道,只要我发布一个问题,我就会找到答案。这是我为其他想要做这样的事情的人想出的

    check.eventson = False
    status = check.get_status()
    for i,stat in enumerate(status):
        if ((enable and not stat) or (not enable and stat)): 
            check.set_active(i)
    check.eventson = True

这里的 check 是对CheckBox()对象的引用,如果要启用所有复选框,则enable设置为变量,否则。TrueFalse

于 2018-11-13T08:16:13.643 回答