kivy如何使用Builder.load_file?
Kivy how to use Builder.load_file?
我的目录结构如下:
project/
controller/
__init__.py
app1.py
view/
app1.kv
main.py
我的main.py
是:
from controller.app1 import App1
def main():
App1().run()
if __name__ == '__main__':
main()
我的app1.py
是:
from kivy.app import App
from kivy.lang import Builder
Builder.load_file('view/app1.kv')
class App1(App):
pass
我是运行:
kivy main.py
但是我的Kivy里面的内容没有加载。
事实证明,方法build()
必须在继承自App
的class中实现,而这个方法必须returnBuilder.load_file('view/app1.kv')
,并使用@Leon 建议我的 app1.py
是:
from kivy.app import App
from kivy.lang import Builder
class App1(App):
def build(self):
return Builder.load_file(
os.path.join(dirname(__file__), '../view/app1.kv')
)
现在,Kivy 文件已正确加载。
当您使用 Build.load_file
加载 .kv 文件时,确保小部件是 root
避免它返回 None.read doc 以查看您使用 Builder
所做的其他事情
from kivy.app import App
from kivy.lang import Builder
class App1(App):
def build(self):
self.root = Builder.load_file(os.path.join(dirname(__file__),/app1.kv')
)
我的目录结构如下:
project/
controller/
__init__.py
app1.py
view/
app1.kv
main.py
我的main.py
是:
from controller.app1 import App1
def main():
App1().run()
if __name__ == '__main__':
main()
我的app1.py
是:
from kivy.app import App
from kivy.lang import Builder
Builder.load_file('view/app1.kv')
class App1(App):
pass
我是运行:
kivy main.py
但是我的Kivy里面的内容没有加载。
事实证明,方法build()
必须在继承自App
的class中实现,而这个方法必须returnBuilder.load_file('view/app1.kv')
,并使用@Leon 建议我的 app1.py
是:
from kivy.app import App
from kivy.lang import Builder
class App1(App):
def build(self):
return Builder.load_file(
os.path.join(dirname(__file__), '../view/app1.kv')
)
现在,Kivy 文件已正确加载。
当您使用 Build.load_file
加载 .kv 文件时,确保小部件是 root
避免它返回 None.read doc 以查看您使用 Builder
from kivy.app import App
from kivy.lang import Builder
class App1(App):
def build(self):
self.root = Builder.load_file(os.path.join(dirname(__file__),/app1.kv')
)