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 的属性。
访问您的类的 instance 的 search_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”对象没有属性文本的主要内容,如果未能解决你的问题,请参考以下文章