【问题标题】:Err0r in kv filekv 文件中的 Err0r
【发布时间】:2021-02-25 15:50:04
【问题描述】:

为什么不起作用?:

from kivy.lang import Builder
from kivymd.app import MDApp
KV = '''
Screen:
    MDFlatButton:
        id: flat
        text: root.gg
'''
class Test(MDApp):
    def build(self):
        gg = '123'
        return Builder.load_string(KV)
Test().run()

错误:

Traceback (most recent call last):
   File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\kivy\lang\builder.py", line 242, in create_handler
     return eval(value, idmap), bound_list
   File "<string>", line 5, in <module>
   File "kivy\weakproxy.pyx", line 32, in kivy.weakproxy.WeakProxy.__getattr__
 AttributeError: 'Screen' object has no attribute 'gg'
 
 During handling of the above exception, another exception occurred:
 
 Traceback (most recent call last):
   File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\kivy\lang\builder.py", line 695, in _apply_rule
     value, bound = create_handler(
   File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\kivy\lang\builder.py", line 245, in create_handler
     raise BuilderException(rule.ctx, rule.line,
 kivy.lang.builder.BuilderException: Parser: File "<inline>", line 5:
 ...
       3:    MDFlatButton:
       4:        id: flat
 >>    5:        text: root.gg
 ...
 AttributeError: 'Screen' object has no attribute 'gg'
   File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\kivy\lang\builder.py", line 242, in create_handler
     return eval(value, idmap), bound_list
   File "<string>", line 5, in <module>
   File "kivy\weakproxy.pyx", line 32, in kivy.weakproxy.WeakProxy.__getattr__
 
 
 During handling of the above exception, another exception occurred:
 
 Traceback (most recent call last):
   File "C:\Users\lolo\PycharmProjects\FindWord\FindWord.py", line 14, in <module>
     Test().run()
   File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\kivy\app.py", line 949, in run
     self._run_prepare()
   File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\kivy\app.py", line 919, in _run_prepare
     root = self.build()
   File "C:\Users\lolo\PycharmProjects\FindWord\FindWord.py", line 13, in build
     return Builder.load_string(KV)
   File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\kivy\lang\builder.py", line 408, in load_string
     self._apply_rule(
   File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\kivy\lang\builder.py", line 710, in _apply_rule
     raise BuilderException(rule.ctx, rule.line,
 kivy.lang.builder.BuilderException: Parser: File "<inline>", line 5:
 ...
       3:    MDFlatButton:
       4:        id: flat
 >>    5:        text: root.gg
 ...
 BuilderException: Parser: File "<inline>", line 5:
 ...
       3:    MDFlatButton:
       4:        id: flat
 >>    5:        text: root.gg
 ...
 AttributeError: 'Screen' object has no attribute 'gg'
   File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\kivy\lang\builder.py", line 242, in create_handler
     return eval(value, idmap), bound_list
   File "<string>", line 5, in <module>
   File "kivy\weakproxy.pyx", line 32, in kivy.weakproxy.WeakProxy.__getattr__
 
   File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\kivy\lang\builder.py", line 695, in _apply_rule
     value, bound = create_handler(
   File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\kivy\lang\builder.py", line 245, in create_handler
     raise BuilderException(rule.ctx, rule.line,

我需要 kv 文件来查看函数内部的变量。每个人都建议使用root,但这个错误阻止了我。 我需要完全使用'root.gg',应用程序不适合,因为当需要引用函数中的变量时应用程序不起作用。问题的上一版本here

看起来您的帖子主要是代码;请添加更多详细信息。

看起来您的帖子主要是代码;请添加更多详细信息。

看起来您的帖子主要是代码;请添加更多详细信息。

【问题讨论】:

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


    【解决方案1】:

    您需要在类级别声明 gg。 另外,不要使用root.gg,而是使用app.gg

    【讨论】:

    • 我需要这个变量在函数中
    • 函数中的变量应该可以通过app.build.gg访问
    猜你喜欢
    • 2020-12-06
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    相关资源
    最近更新 更多