【发布时间】:2023-03-09 00:55:01
【问题描述】:
我正在学习编写 Kivy 应用程序。我创建了一个由两个网格布局组成的玩具应用程序。一个包含两个按钮,另一个包含两个标签。任务是在单击按钮时修改标签。当所有布局都在同一个 .kv 文件中时,我可以非常简单地做到这一点,只需以标准方式创建 id 和属性。
当我将布局拆分为单独的 .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
<DynamicWidgets>:
MyFirstGrid:
MySecondGrid:
第一个网格的kivy
# File name: myfirstgrid.kv
#:kivy 1.9.0
<MyFirstGrid@GridLayout>
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
<MySecondGrid@GridLayout>
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 文件中的小部件创建引用和属性。
我觉得我缺少一些基本的东西。
谢谢
【问题讨论】:
标签: python python-2.7 kivy