我是Python的新手,我不懂Kivy指令的魔力。例如,在文档之后,我用这种方式开发了我的(天真的)布局颜色背景扩展
class BoxLayoutColor(BoxLayout) :
def __init__(self, color = (0,0,0,1), **kwargs):
super(BoxLayoutColor, self).__init__(**kwargs)
with self.canvas.before:
(r,g,b,a) = color
Color(r,g,b,a)
self.rect = Rectangle(size=self.size, pos=self.pos)
self.bind(size=self._update_rect, pos=self._update_rect)
def _update_rect(self, instance, value):
self.rect.pos = instance.pos
self.rect.size = instance.size
它似乎可以工作,但我想知道构造函数Color()是如何工作的(因为它是一个构造函数,我是对的?)会影响上下文。在Python文档中,关于with语句,一定有一些隐含的东西我看不出来。。。你知道吗
而且,还有一种方法可以将该功能分组,以便在其他布局中重用?你知道吗
with
语句是一种通用的python语法,它调用所传递对象的一些特殊方法(在本例中是self.canvas.before
)。当这种情况发生时,kivy的canvas会在某个地方设置一个全局变量,并在with语句结束时取消设置它。当指令被实例化时,它们会检查是否定义了这个变量,如果定义了,则会自动将它们自己添加到给定的画布中。你知道吗Kivy不支持任何小部件操作的这种语法,尽管添加它可能并不困难。大多数情况下,我们使用kv语言,这也有其他的优点。你知道吗
相关问题 更多 >
编程相关推荐