Mar*_*oke 4 python function button kivy
按下按钮调用函数时,我无法将参数传递给函数。可以用 kivy 语言这样做:
Button:
on_press: root.my_function('btn1')
Run Code Online (Sandbox Code Playgroud)
但我想用 python 来做,因为我想用循环创建更多数量的按钮。目前我在 python 中调用我的函数是这样的:
Button(on_press=self.my_function)
Run Code Online (Sandbox Code Playgroud)
但正如我所说,如果我尝试将参数传递给这样的函数,我会收到“AssertionError: None is not callable”,如下所示:
Button(on_press=self.my_function('btn1'))
Run Code Online (Sandbox Code Playgroud)
Button(on_press=self.my_function)
Run Code Online (Sandbox Code Playgroud)
这是将函数作为参数传递。
Button(on_press=self.my_function('btn1'))
Run Code Online (Sandbox Code Playgroud)
这是调用函数并将返回值作为参数传递给on_press。由于返回值是 None,你会得到你的错误。
相反,您需要传递一个调用普通函数并自动传递参数的新函数。一般来说,使用起来很方便functools.partial:
from functools import partial
Button(on_press=partial(self.my_function, 'btn1'))
Run Code Online (Sandbox Code Playgroud)
您还可以使用 lambda 函数:
Button(on_press=lambda *args: self.my_function('btn1', *args))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4203 次 |
| 最近记录: |