You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kivy点击按钮报错on_press_button()缺少必填位置参数'instance'

错误产生原因

该错误由Kivy事件回调的参数传递规则与代码写法不匹配导致:

  1. Python代码中定义的on_press_button是whatever_two类的成员方法,除Python类方法默认隐式传入的self参数外,还定义了instance形参用于接收触发点击事件的按钮对象,方法内部也依赖instance.text读取按钮文本。
  2. kv布局文件中写的回调为on_press: root.on_press_button():带括号的写法属于主动触发函数调用,Kivy不会自动为该调用补全触发事件的按钮实例参数,最终方法调用时缺少instance对应的实参,触发缺少位置参数的报错。
修复方案

两种修复方式任选其一即可:

  • 方式一:在kv的回调调用中手动传入按钮实例。kv语法中,Button组件作用域内的self指代当前按钮对象,将按钮的回调配置修改为:
Button:
    text: 'Click me'
    on_press: root.on_press_button(self)
  • 方式二:去掉回调后的括号,直接绑定方法引用,由Kivy自动完成参数传递。将按钮的回调配置修改为:
Button:
    text: 'Click me'
    on_press: root.on_press_button

该写法是Kivy默认的事件绑定写法,事件触发时Kivy会自动调用绑定的方法,并将触发事件的Button实例作为参数传入,完全匹配现有方法的形参定义。

补充:两种写法的适用场景有区别:带括号的写法支持自定义传入额外参数,不带括号的写法只能接收Kivy自动传入的事件触发实例,按需选择即可。

内容的提问来源于stack exchange,提问作者IC CO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 22:09:36