为啥 kv 文件变量不接受自我?
Posted
技术标签:
【中文标题】为啥 kv 文件变量不接受自我?【英文标题】:Why don't the kv file variables accept self?为什么 kv 文件变量不接受自我? 【发布时间】:2021-05-26 20:38:30 【问题描述】:文件的kv变量如何使用self引用文件的py变量?
事实上,App 只存在于类中,而只存在于函数中。
kv 文件变量只接受应用程序:
'''
MDFlatButton:
id: flat
text: app.gg
'''
但我需要它像这样工作:
class Test(MDApp):
gg = '123'
MDFlatButton:
id: flat
text: self.gg
class Test(MDApp):
def build(self):
gg = '123'
要引用函数内部的变量,你需要self,它不接受kv。问题:如何让它工作而不报错?
MDFlatButton:
id: flat
text: self.gg
或者其他,但是 MDFlatButton 按钮从函数中获取文本参数。
帮助(
【问题讨论】:
您可以在kv
中使用self
。请发帖minimal reproducible example。
【参考方案1】:
出来!这对我有用:
from kivymd.app import MDApp
from kivy.lang import Builder
KV = '''
Screen:
MDFlatButton:
id: flat
text: app.gg
'''
class Test(MDApp):
def build(self):
self.gg = '555'
return Builder.load_string(KV)
Test().run()
不知道我做了什么,但是这个工作
【讨论】:
【参考方案2】:你可以使用root
MDFlatButton:
id: flat
text: root.gg
第二个错误是你没有将它设置为self。
class Test(MDApp):
def build(self):
self.gg = '123' # <---- was gg = '123'
【讨论】:
我正在尝试,但收到错误:文件“C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\kivy\lang\builder.py”,第 695 行,在 _apply_rule 值中,bound = create_handler(文件“C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\kivy\lang\builder.py”,第 245 行,在 create_handler 中引发 BuilderException(rule.ctx,规则线, 添加了另一条关于在没有self
的情况下设置gg
的评论。不确定您遇到的错误...以上是关于为啥 kv 文件变量不接受自我?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 pd.read_csv 不接受 Windows 文件路径中的变量名?