我正在尝试从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:未定义名称'WORLD'”。用“世界”代替WORLD毫无问题。
答案 0 :(得分:1)
假设您未安装pygame library(如果已安装pygame库,则导入时会发生冲突),根据{{3},导入.kv的方式与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