python - kivy python通过单击按钮将参数传递给函数

标签 python function button kivy

通过按下按钮调用函数时,我在将参数传递给函数时遇到问题。可以用 kivy 语言这样做:

Button: 
   on_press: root.my_function('btn1')

但我想用 python 来做,因为我想创建更多带有循环的按钮。目前我在 python 中调用我的函数,如下所示:

Button(on_press=self.my_function)

但正如我所说,如果我尝试将参数传递给这样的函数,我会收到“AssertionError:None 不可调用”,如下所示:

Button(on_press=self.my_function('btn1'))

最佳答案

Button(on_press=self.my_function)

这是传递函数作为参数。

Button(on_press=self.my_function('btn1'))

这是调用函数并将返回值作为参数传递给on_press。由于返回的值为 None,因此您会收到错误。

您需要传递一个新函数来调用您的普通函数并自动传递参数。一般来说,使用functools.partial比较方便:

from functools import partial
Button(on_press=partial(self.my_function, 'btn1'))

您还可以使用 lambda 函数:

Button(on_press=lambda *args: self.my_function('btn1', *args))

关于python - kivy python通过单击按钮将参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39809206/

相关文章:

python - 在不使用 settings.json 文件的情况下在 VS Code 中设置本地项目的 Python 路径

python - 来自数据框组的条形图

C++ 回文 boolean 函数(使用指针)

javascript - 在 Javascript 中为 document.getElementById 创建别名

jquery - IE<v9问题,标签中的jquery UI单选按钮img不会触发值更改

javascript - 将按钮绑定(bind)到根据文本框中值的大小激活的多个文本框

python - 如何在 python 中编写查找和执行命令

python - 在 Python 中为多个环境创建连接字符串的最佳位置在哪里

swift - 嵌套函数中函数的返回值 (Swift 3 | Xcode)

javascript - 没有提交表单的bootstrap html点击按钮