我真的想要得到Kivy的概念。我知道它是强大而有用的,但对于我来说,在某些方面也难以理解,至少在here中给出的例子。在“使用Kivy语言进行设计”一节中,我找到了以下示例:
Python的文件
from kivy.uix.floatlayout import FloatLayout
from kivy.app import App
from kivy.properties import ObjectProperty, StringProperty
class Controller(FloatLayout):
''' Create a controller that receives a custom widget from the kv lang file.
Add an action to be called from the kv lang file. '''
# label_wid = ObjectProperty()
info = StringProperty()
def do_action(self):
self.label_wid.text = 'My label after button press'
self.info = 'New info text'
class ControllerApp(App):
def build(self):
return Controller(info='Hello world')
if __name__ == '__main__':
ControllerApp().run()
controller.kv
<Controller>:
label_wid: my_custom_label
BoxLayout:
orientation: 'vertical'
padding: 20
Button:
text: 'My controller info is: ' + root.info
on_press: root.do_action()
Label:
id: my_custom_label
text: 'My label before button press'
与原版有一些小的偏差:我在#label_wid = ObjectProperty()一行注释,试图了解它背后的想法,期望代码不能运行。但它正在运行!那么对Kivy有更好理解的人会如此善意地解释,为什么这行代码是有用的(可能至少出于教育原因),如果还没有要求(在任何情况下,我都不知道)?
答案 0 :(得分:1)
当你为一个不存在的属性添加一个kv行时,会自动创建它,因此在这种情况下kv实际上与在python中放置label_wid = ObjectProperty()
相同。但是,在Python中添加属性更明确(特别是如果您将从python访问它)并且让您确定将创建正确类型的属性。