【发布时间】:2019-04-14 01:45:55
【问题描述】:
我想在屏幕上放置 6 个块(小部件)。我首先更新块的“pos”属性,然后尝试将它们一一添加到屏幕上。问题是最后一个块根本没有放置,所有其他块都在它们的邻居位置,而不是给他们的位置。
我尝试了多种变体,例如在初始化时使用 kwarg 设置位置,但没有奏效。似乎我没有得到任何东西,所以我寻求帮助。有人可以告诉我为什么这不起作用吗?
class Block(Widget):
def __init__(self, red, green, blue, **kwargs):
super(Block, self).__init__(**kwargs)
self.canvas.add(Color(red, green, blue, 1))
class GameEnvironment(Widget):
def __init__(self, **kwargs):
super(GameEnvironment, self).__init__(**kwargs)
self.blocks = self.create_blocks()
self.position_blocks()
self.add_blocks()
def create_blocks(self):
red_block = Block(1, 0, 0)
blue_block = Block(0, 0, 1)
green_block = Block(0, 1, 0)
black_block = Block(0, 0, 0)
orange_block = Block(1, .55, 0)
celeste_block = Block(.5, 1, .83)
return [red_block, blue_block, green_block, black_block, orange_block, celeste_block]
def position_blocks(self):
x = 0
for block in self.blocks:
block.pos = [x, 0]
print("position:", block.pos)
x += 100
def add_blocks(self):
for block in self.blocks:
print("drawing block")
self.add_widget(block)
class BlocksGameApp(App):
def build(self):
game_environment = GameEnvironment()
return game_environment
BlocksGameApp().run()
.kv:
<GameEnvironment>:
canvas:
Color:
rgba: 1, 1, 1, 1
Rectangle:
pos: self.pos
size: self.size
<Block>:
width: 100
height: self.width
canvas:
Rectangle:
pos: self.pos
size: self.size
预期:6 个彼此相邻的矩形,左下角为红色。
结果:5 个矩形,第一个矩形位于位置 100, 0。
【问题讨论】: