【发布时间】: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 那么这是一个需要修复的单独错误。
标签: kivy kivy-language kivymd