AttributeError:“kivy.properties.DictProperty”对象没有属性“字段”?
Posted
技术标签:
【中文标题】AttributeError:“kivy.properties.DictProperty”对象没有属性“字段”?【英文标题】:AttributeError: 'kivy.properties.DictProperty' object has no attribute 'field'? 【发布时间】:2021-05-28 02:44:50 【问题描述】:我收到此错误:“AttributeError: 'kivy.properties.DictProperty' 对象没有属性 'field'”
我正在尝试使用 kivymd 创建一个下拉菜单。 在我的 .kv 文件中,我有这个“id: field”,它一直对我说“对象没有属性‘field’”
欢迎任何帮助!
这是我的 .kv 文件:
<Box>:
MDTextField:
id: field
pos_hint: 'center_x': .5, 'center_y': .5
size_hint_x: None
width: "200dp"
hint_text: "Password"
on_focus: if self.focus: app.menu.open()
这是我的 .py 文件:
from kivy.uix.boxlayout import BoxLayout
from kivy.clock import Clock
from kivymd.app import MDApp
from kivymd.uix.menu import MDDropdownMenu
class Box(BoxLayout):
pass
class Projeto(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.screen = Box
menu_items = ["icon": "git", "text": f"Item i" for i in range(5)]
self.menu = MDDropdownMenu(
caller=self.screen.ids.field,
items=menu_items,
position="bottom",
width_mult=4,
)
self.menu.bind(on_release=self.set_item)
def set_item(self, instance_menu, instance_menu_item):
def set_item(interval):
self.screen.ids.field.text = instance_menu_item.text
instance_menu.dismiss()
Clock.schedule_once(set_item, 0.5)
def build(self):
return Box()
if __name__ == '__main__':
Projeto().run()
【问题讨论】:
尝试将self.screen = Box
更改为self.screen = Box()
。只需添加()
。
@JohnAnderson 刚刚做到了。它说“ AttributeError:'super'对象没有属性'getattr'”
@manus 那么这是一个需要修复的单独错误。
【参考方案1】:
您可以通过消除您的 __init__()
方法并将部分代码移至 build()
方法来修复该错误:
class Projeto(MDApp):
def set_item(self, instance_menu_item):
def set_item(interval):
self.screen.ids.field.text = instance_menu_item.text
self.menu.dismiss()
Clock.schedule_once(set_item, 0.5)
def build(self):
self.screen = Box()
menu_items = ["icon": "git", "text": f"Item i" for i in range(5)]
self.menu = MDDropdownMenu(
caller=self.screen.ids.field,
callback=self.set_item,
items=menu_items,
position="bottom",
width_mult=4,
)
# self.menu.bind(on_release=self.set_item) # use callback instead of bind
return self.screen
【讨论】:
以上是关于AttributeError:“kivy.properties.DictProperty”对象没有属性“字段”?的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError: 'RDD' 对象没有属性 'show'
AttributeError:“NumpyArrayIterator”对象没有属性“类”
AttributeError:模块 'dbus' 没有属性 'lowlevel'