我正在学习写Kivy应用程序 . 我创建了一个由两个网格布局组成的玩具应用程序 . 一个包含两个按钮,另一个包含两个标签 . 任务是在单击按钮时修改标签 . 通过简单地以标准方式创建id和属性,当所有布局都在同一个.kv文件中时,我就能够做到这一点 .
当我将布局拆分为单独的.kv文件时,我无法做同样的事情 . 我想这样做,因为我实际工作的项目太复杂,无法包含在单个.kv文件中 . 所以这是我的代码:
主python代码:
# filename DynamicApp.py
import kivy
kivy.require('1.9.0')
from kivy.app import App
from kivy.uix.relativelayout import RelativeLayout
from kivy.lang import Builder
Builder.load_file("myfirstgrid.kv")
Builder.load_file("mysecondgrid.kv")
class DynamicWidgets(RelativeLayout):
pass
class DynamicApp(App):
def build(self):
return DynamicWidgets()
if __name__ == "__main__":
DynamicApp().run()
基础kivy文件:
# File name: DynamicApp.kv
#:kivy 1.9.0
:
MyFirstGrid:
MySecondGrid:
第一个网格的kivy
# File name: myfirstgrid.kv
#:kivy 1.9.0
id: _my_first_grid
rows: 1
cols: 2
Label:
id: _label_1
text: "Hello World"
Label:
id: _label_2
text: "Hello World"
Kivy为第二个网格
# File name: myseoncdgrid.kv
#:kivy 1.9.0
#:import mybutton mybutton
size_hint: 0.25, 0.25
pos_hint: {'center_x': 0.5, 'y' : 0}
rows: 1
cols: 2
MyButton:
text: 'Do it'
label_1: _label_1
MyButton:
text: 'Do it Again'
label_2: _label_2
mybutton.py控制按钮操作,这里没有显示,因为我无法在MyButton小部件中创建属性和引用,因为它给了我错误 NameError: name '_label_2' is not defined .
我做了完全相同的策略,但所有kv在一个文件中,它很好 .
如何为其他.kv文件中的窗口小部件创建引用和属性 .
我觉得我错过了一些基本的东西 .
谢谢