【问题标题】: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 按钮从函数中获取文本参数。

帮助(

【问题讨论】:

标签: python python-3.x kivy kivy-language kivymd


【解决方案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 的评论。不确定您遇到的错误...
    猜你喜欢
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 2021-10-28
    • 2020-12-25
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 2021-07-09
    相关资源
    最近更新 更多