with
我刚刚意识到可以使用Python 语句在 Kivy 中添加顶点指令的方式有些神秘(至少对我而言) 。例如,使用的方式with
是这样的:
... some code
class MyWidget(Widget)
... some code
def some_method (self):
with self.canvas:
Rectangle(pos=self.pos, size=self.size)
一开始我以为只是with
偶尔使用的Python语句。但突然间我意识到事实并非如此。通常它看起来更像这样(示例取自此处):
with open('output.txt', 'w') as f:
f.write('Hi there!')
通常as
在实例之后有一个类似的东西和对象的别名。在 Kivy 示例中,我们没有定义和别名,这仍然可以。但令我困惑的部分是指令 Rectangle 仍然与 self.canvas 相关联。在阅读了with
声明之后,我非常确信 Kivy 代码应该写成这样:
class MyWidget(Widget)
... some code
def some_method (self):
with self.canvas as c:
c.add (Rectangle(pos=self.pos, size=self.size))
我假设在内部该方法add
是被调用的方法。假设是基于我们可以简单地添加矩形self.add (Rectangle(pos=self.pos, size=self.size))
我是否遗漏了有关with
Python 语句的某些内容?或者这是 Kivy 实现的某种东西?