无法访问 Python 中的小部件 ID
Unable to access Widget ids in Python
代码:
from kivymd.app import MDApp
from kivy.properties import ObjectProperty
from kivy.lang import Builder
KV = """
MDScreen:
submit_btn: submit_btn
MDRaisedButton:
id: submit_btn
text:'Submit'
on_press: app.btn()
"""
class Test(MDApp):
submit_btn = ObjectProperty(None)
def build(self):
return Builder.load_string(KV)
def btn(self):
print(self.submit_btn.state)
Test().run()
按下按钮时,我收到以下错误:
AttributeError: 'NoneType' object has no attribute 'state'
我无法访问 id
个小部件。我做错了什么?
这与您几分钟前提出的问题非常相似:您没有将 self.submit_btn
设置为 None 以外的任何值。看起来你在 kv 规则中尝试过,但你实际上已经设置了 MdScreen
实例的 属性 ,它是你的根小部件,访问为 self.root.submit_btn
.
代码:
from kivymd.app import MDApp
from kivy.properties import ObjectProperty
from kivy.lang import Builder
KV = """
MDScreen:
submit_btn: submit_btn
MDRaisedButton:
id: submit_btn
text:'Submit'
on_press: app.btn()
"""
class Test(MDApp):
submit_btn = ObjectProperty(None)
def build(self):
return Builder.load_string(KV)
def btn(self):
print(self.submit_btn.state)
Test().run()
按下按钮时,我收到以下错误:
AttributeError: 'NoneType' object has no attribute 'state'
我无法访问 id
个小部件。我做错了什么?
这与您几分钟前提出的问题非常相似:您没有将 self.submit_btn
设置为 None 以外的任何值。看起来你在 kv 规则中尝试过,但你实际上已经设置了 MdScreen
实例的 属性 ,它是你的根小部件,访问为 self.root.submit_btn
.