如何解决关于Kivy中的属性错误的问题
from kivy.properties import ObjectProperty
from kivy.uix.floatlayout import FloatLayout
from kivymd.app import MDApp
from kivymd.uix.screen import Screen
from kivy.lang import Builder
from Help import help
from kivymd.uix.dialog import MDDialog
class Begins(MDApp):
def build(self):
self.theme_cls.primary_palette = "Yellow"
self.theme_cls.primary_hue = "A700"
self.theme_cls.theme_style = "Dark"
screen = Screen()
self.id_v = Builder.load_string(help)
screen.add_widget(self.id_v)
return screen
class My(FloatLayout):
scr = ObjectProperty(None)
def data(self):
username = self.id_v.user.text
password = self.id_v.passw.text
if username == "MD" and password == "kivy":
print('ok')
else:
dial=MDDialog(text='Opps Wrong!')
dial.open()
Begins().run()
这是我的奇异果文件
help = """
Screen:
id:scr
user:user
passw:passw
FloatLayout:
MDTextField:
id: user
hint_text : "Enter your Name"
helper_text : "Have u forget it?"
helper_text_mode : "on_focus"
icon_right : "android"
icon_right_color : app.theme_cls.primary_color
size_hint_x :None
width : '300'
pos_hint:{'center_x':0.5,'center_y':0.6}
MDTextField:
id: passw
hint_text : "Enter your Password"
helper_text : "Got it?"
helper_text_mode : "on_focus"
icon_right : "key"
icon_right_color : app.theme_cls.primary_color
size_hint_x :None
width : '300'
pos_hint:{'center_x':0.5,'center_y':0.5}
pass: True
MDRectangleFlatButton:
text:"Log in"
pos_hint:{'center_x': 0.5,'center_y': 0.4}
on_release:root.data()
"""
它显示AttributeError:“屏幕”对象没有属性“数据” 这是问题之一,另一个问题是,每当我默认情况下将其导入到另一个文件时,它首先运行,因此在哪里使用if_name _ ==“ main ”:例如我正在使用此屏幕作为登录按钮。
解决方法
像这样保护您的run()
呼叫:
if __name__ == '__main__':
Begins().run()
在您的kv
中,该行:
on_release:root.data()
调用该data()
规则的root
对象的kv
方法。该规则的root
似乎是Screen
。来自documentation:
,root
此关键字仅在规则定义中可用并表示 规则的根窗口小部件(规则的第一个实例):
: custom: 'Hello world' Button: text: root.custom
使用了几个小时之后,我才发现它不是
on_release:root.data()
应该用
来引用on_release:app.data()
*,只需在App类中移动数据功能即可。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。