Python Kivy 错误:“kivy.properties.ObjectProperty”对象没有属性文本

Posted

技术标签:

【中文标题】Python Kivy 错误:“kivy.properties.ObjectProperty”对象没有属性文本【英文标题】:Python Kivy error: 'kivy.properties.ObjectProperty' object has no attribute text 【发布时间】:2020-10-04 14:26:14 【问题描述】:

我刚开始学习 Python Kivy,想从 TextInput 输出文本 控制台错误:AttributeError: 'kivy.properties.ObjectProperty' 对象没有属性文本

我的 Python 代码:

class SearchField(AnchorLayout):
    search_field = ObjectProperty(None)
    result = search_field.text
class MyApp(App):
    def build(self):
        return SearchField()
if __name__ == "__main__":
    MyApp().run()

我的 .kv 代码:

<SearchField>
    search_field: search_field
    anchor_x: "center"
    anchor_y: 'top'
    padding: (0, 20)
    BoxLayout:
        size_hint: (None, None)
        size: (600, 30)
        TextInput:
            id: search_field
            multiline: False
        Button:
            size_hint: (None, None)
            size: (50, 30)
            text: "Search"
            on_release: search_result.text = root.result
    Label:
         id: search_result
         text: ""
         font_size: 30

【问题讨论】:

错误似乎很明显,text 不是 ObjectProperty 的属性。 访问您的类的 instancesearch_field 属性,您正在错误地访问类级别的属性对象。 【参考方案1】:

这个程序有几个错误。 1- text 属性在声明为 ObjectProperty 之后直接应用于 search_field 变量。所以,它是一个 ObjectProperty 实例并且没有属性text。 2-程序的缩进做得不好。 3- .kv 文件中没有很好地声明属性。

虽然我还没有完全理解程序的用途,但这里有一个安全的版本:

from kivy.app import App
from kivy.uix.anchorlayout import AnchorLayout
from kivy.properties import ObjectProperty


class SearchField(AnchorLayout):
    search_field = ObjectProperty(None)
    result = ""

    def btn(self):
        self.result = self.search_field.text
        print(self.result)


class TestApp(App):
    def build(self):
        return SearchField()


if __name__ == "__main__":
    TestApp().run()

这里是kv文件:

<SearchField>
    search_field: search_field
    anchor_x: "center"
    anchor_y: 'top'
    padding: (0, 20)
    search_result: search_result
    search_field: search_field
    BoxLayout:
        size_hint: (None, None)
        size: (600, 30)
        TextInput:
            id: search_field
            multiline: False
        Button:
            size_hint: (None, None)
            size: (50, 30)
            text: "Search"
            on_release: root.btn()
    Label:
        id: search_result
        text: ""
        font_size: 30

【讨论】:

以上是关于Python Kivy 错误:“kivy.properties.ObjectProperty”对象没有属性文本的主要内容,如果未能解决你的问题,请参考以下文章

Python/Kivy 属性错误

Kivy 错误(python 2.7):sdl2 导入错误

我在使用python kivy构建app时遇到错误

带有pycharm导入错误的kivy

python3:Kivy 编译 iOS 错误。没有蟒蛇食谱

Kivy GUI (Python) 在尝试更新屏幕时陷入分段错误