指导行为说明

2024-09-29 19:19:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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语句,一定有一些隐含的东西我看不出来。。。你知道吗

而且,还有一种方法可以将该功能分组,以便在其他布局中重用?你知道吗


Tags: instance文档posrectselfsizeinitdef
1条回答
网友
1楼 · 发布于 2024-09-29 19:19:12

with语句是一种通用的python语法,它调用所传递对象的一些特殊方法(在本例中是self.canvas.before)。当这种情况发生时,kivy的canvas会在某个地方设置一个全局变量,并在with语句结束时取消设置它。当指令被实例化时,它们会检查是否定义了这个变量,如果定义了,则会自动将它们自己添加到给定的画布中。你知道吗

And also, there is a way to group that functionality to be reused for other layouts ?

Kivy不支持任何小部件操作的这种语法,尽管添加它可能并不困难。大多数情况下,我们使用kv语言,这也有其他的优点。你知道吗

相关问题 更多 >

    热门问题