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

Kivy中Button绑定callback回调函数报错无该属性如何解决

Kivy按钮绑定报错修复方案

核心错误原因

  • callback 方法缩进错误:你将callback定义在了__init__方法内部,不属于Kivy_ui类的实例方法,因此调用self.callback时会触发AttributeError。需要将callback调整到和__init__同级的缩进位置,成为类的公开方法。
  • 事件名错误:Kivy Button组件没有on_click点击事件,正确的事件名为on_press。
  • 其余语法错误:代码存在多处缩进不规范问题,Popup初始化参数缺失逗号也会触发语法错误。

修复后完整代码

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.image import Image
from kivy.uix.popup import Popup

class Kivy_ui(GridLayout):
    def __init__(self,**kwargs):
        super().__init__(**kwargs)
        self.rows= 2 # 定义行数
        self.cols = 3 # 定义列数
        self.image = Image(
            source = 'background.jpg'
            )
        self.add_widget(self.image)
        self.label = Label(
            text = 'Enter your name'
            )
        self.add_widget(self.label)
        self.text_input = TextInput(
            text =''
            )
        self.add_widget(self.text_input)
        self.button = Button(
            text = 'submit'
            )
        # 修正为正确的点击事件名on_press
        self.button.bind(on_press=self.callback)
        self.add_widget(self.button)
        # 弹窗定义
        self.popup = Popup(
            title='Pop_UP display',
            size= (300,400), # 弹窗尺寸
            content = Label(
                text=''
            )
        )
    # 修正缩进,成为类的实例方法
    def callback(self, elem):
        self.popup.content.text = self.text_input.text
        self.popup.open()

class demoap(App):
    def build(self):
        return Kivy_ui()
        
if __name__ == '__main__':
    demoap().run()

修复后运行代码,在输入框填写内容点击submit按钮,即可正常弹出显示输入内容的弹窗。

内容的提问来源于stack exchange,提问作者sudarshan regmi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 14:18:04