matplotlib中未触发的复选按钮

2024-10-04 05:27:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用这个例子作为指导来构建一个复选框按钮集;但是,它不适合我。 在类中,我有一个由按钮组成的函数:

check = CheckButtons(rax,('Button 1', 'Button 2', 'Button 3'), (True,False,False))

那么我在一个类中有这个函数。。。它看起来像:

^{pr2}$

在同一个类中的另一个方法中,我试图用以下命令调用它。。。在

self.check.on_clicked(self.clickButtons())

从本网站: http://matplotlib.org/examples/widgets/check_buttons.html

matplotlib按钮页面状态:

on_clicked(func) When the button is clicked, call func with button label

A connection id is returned which can be used to disconnect

但是,我目前的错误是:

TypeError: clickButtons() takes exactly 2 arguments (1 given)

有人能给我解释一下发生了什么事。。。我怎么知道是哪个按钮被按下了? 提前谢谢。在


Tags: 函数selffalsematplotlibisoncheckbutton
1条回答
网友
1楼 · 发布于 2024-10-04 05:27:35

函数check.on_clicked用于注册单击复选框时的回调。您需要将它作为参数传递给它一个接受一个参数label的函数对象。您要使用的语法是:

check.on_clicked(my_obj.clickButtons)

这里有两件重要的事情需要理解。首先,在Python中,所有的东西都是一个对象。函数只是碰巧具有属性__call__的对象。第二,当你将一个成员函数绑定到一个类的实例时,实例对象是隐式的第一个参数,因此{}是一个对象,它作为一个接受一个参数的函数。在

当您调用check.on_clicked(self.clickButtons())时,您是在说“调用对象check上的函数{},使用调用结果self.clickButtons()作为参数”。对clickButtons的调用抛出您看到的错误,因为它需要2个参数(隐式selflabel),而您只使用一个参数(隐式self)调用它。在

如果您有一个带有函数f(self,b)的类A,并且在Aa中,下面两个是等价的

^{pr2}$

相关问题 更多 >