【问题标题】:Python kivy get labels from *.py file in kivy filePython kivy 从 kivy 文件中的 *.py 文件获取标签
【发布时间】:2018-08-03 17:06:37
【问题描述】:

我正在尝试从 python 文件 (labels.py) 中获取标签并将这些标签注入到 kivy 文件 (pong.kv) 内的标签中。

# main.py
from kivy.app import App
from kivy.uix.widget import Widget


class PongGame(Widget):
    pass


class PongApp(App):
    def build(self):
        return PongGame()


if __name__ == "__main__":
    PongApp().run()

这是 labels.py 文件:

# labels.py
WORLD = "World"

这是kv文件:

#: kivy 1.10.1
#: import labels pygame.labels

<PongGame>:
    canvas:
        Rectangle:
            pos: self.center_x - 5, 0
            size: 10, self.height

    Label:
        font_size: 70
        center_x: root.width / 4
        top: root.top - 50
        text: WORLD

如果我运行 main.py 文件,我会收到错误“NameError: name 'WORLD' is not defined”。用“World”替换 WORLD 运行没有任何问题。

【问题讨论】:

    标签: python text kivy kivy-language


    【解决方案1】:

    假设您没有安装 pygame library(如果您安装了 pygame 库,您将在导入时遇到冲突),导入到 .kv 符合与 docs 相同的 python 规则,所以您的导入.kv:

    #: import labels pygame.labels
    

    它将通过以下方式翻译成python:

    from pygame.labels as labels
    

    所以,记住上面的内容,获取“WORLD”的方法是使用命名空间,即labels.WORLD。因此 .kv 应如下所示:

    #: kivy 1.10.1
    #: import labels pygame.labels
    
    <PongGame>:
        canvas:
            Rectangle:
                pos: self.center_x - 5, 0
                size: 10, self.height
    
        Label:
            font_size: 70
            center_x: root.width / 4
            top: root.top - 50
            text: labels.WORLD
    

    【讨论】:

    • 谢谢你,你让我开心。我一直在修补这个问题好几个小时:)。
    • @MrYouMath 我建议经常查阅文档:)
    猜你喜欢
    • 2022-01-21
    • 2019-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多