kivy - AttributeError:“kivy.properties.DictProperty”对象没有属性“字段”?
问题描述
我收到此错误:“ 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()
解决方案
您可以通过消除您的__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
推荐阅读
- go - 如何定义我自己的 helm 模板函数
- sql-server - SQL Server 的 Cmd 行安装失败:无法识别指定的设置“browsersvcstartuptype”消息
- azure - 天蓝色搜索中的索引器可以使用任何其他字符而不是 , 作为分隔符来分词并放入集合类型的天蓝色搜索索引字段吗?
- excel - 我希望代码返回一个字符串,但它正在返回一个值
- google-app-maker - 在加载表时设置值
- php - 通过functions.php设置woocommerce客户注释不起作用
- javascript - 错误:没有为 Builder 找到合适的构造函数(无参数)构造函数 Builder.Builder(Context) 不适用
- keras - 不兼容的形状:[128,28] 与 [128,29] 的验证
- java - 启动 SpringBoot 应用程序时没有合格 Bean (NoSuchBeanDefinitionException) 可用错误
- go - tls:HTTP 请求没有重新协商错误