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

Python Kivy运行报AssertionError: Button对象不可调用问题求助

问题原因
  • 命名冲突:你将按钮实例赋值给了self.submit属性,绑定on_press事件时传入的也是self.submit,此时该变量指向的是Button组件对象,不是可调用的函数,因此触发不可调用的报错。
  • 回调方法作用域错误:你定义的Pressed方法写在了gridlayout类的外部,不属于类的成员方法,类内部无法正常访问到该回调函数。
  • 额外的拼写模块警告属于可选问题:你导入了kivy.core.spelling但未安装依赖库enchant,该警告不影响主逻辑运行,只是拼写相关功能无法使用。
解决方案

按以下要求修改代码即可正常运行:

  1. 将Pressed方法的缩进调整到gridlayout类内部,使其成为类成员方法
  2. 修改事件绑定代码,将on_press的绑定目标改为回调函数self.Pressed
  3. 可选:如果不需要拼写相关功能,删除from kivy.core.spelling import *导入行即可消除对应的警告信息

修改后的完整代码如下:

from kivy import *
from kivy.app import *
from kivy.core.window import *
from kivy.lang.builder import *
from kivy.properties import *
from kivy.uix.colorpicker import *
from kivy.uix.gridlayout import *
from kivy.uix.scrollview import *
from kivy.uix.textinput import *
from kivy.uix.widget import *
from kivy.uix.button import *
from kivy.uix.label import *

label="Source Text"

class gridlayout(GridLayout):
    def __init__(self, **kwargs):
        super(gridlayout, self).__init__(**kwargs)
        self.cols = 1

        self.inside = GridLayout()
        self.inside.cols = 2

        self.inside.add_widget(Label(text=label))
        self.SourceText = TextInput(multiline=True)
        self.inside.add_widget(self.SourceText)
        self.cols = 1

        self.submit = Button(text="Submit")
        self.submit.bind(on_press=self.Pressed)
        
        self.add_widget(self.inside)
        self.add_widget(self.submit)
    
    def Pressed(self,instance):
        #  SourceText = self.SourceText.text
        #  label = SourceText
        print("SourceText")
    
class SBAP(App):
    def build(self):
        return gridlayout()

if __name__ == '__main__':
    SBAP().run()
改动说明
  • 调整了Pressed方法的缩进,将其纳入gridlayout类的作用域内
  • 将事件绑定代码从self.submit.bind(on_press=self.submit)修改为self.submit.bind(on_press=self.Pressed)
  • 删除了未使用的kivy.core.spelling导入,消除了对应的依赖警告

内容的提问来源于stack exchange,提问作者Derek Neilson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:54:06