2014-12-12 2 views
0

새 위젯을 추가 할 수 있지만 올바르게 연결되지 않았습니다. 캔버스가 잘못된 좌표계에서와 같이 보입니다. enter image description here동적으로 키비 위젯을 추가합니다.

내가 파란색 상자가 상사 것으로 기대 :

내 평

class Ship(Widget): 
    def __init__(self, **kwargs): 
     super(Ship, self).__init__(**kwargs) 
     self.vel = 10 

class Game(Widget): 

    def __init__(self, **kwargs): 
     super(Game, self).__init__(**kwargs) 
     self.ship = Ship() 
     self.add_widget(self.ship) 
     self.ship.center = self.center 

내 .kv

<Ship> 
    size: 50, 50 
    canvas: 
     Color: 
      rgb: 0, 0, 1 
     Rectangle: 
      size: self.size 
      pos: self.pos 
<Game> 
    canvas.before: 
     Color: 
      rgb: 0, 0, 0 
     Rectangle: 
      size: self.size 
      pos: self.pos 

이 이미지를 생성합니다.

답변

1

가운데 위치를 지정할 때 레이아웃이 아직 계산되지 않았습니다. 모든 위젯은 기본적으로 크기 100, 100부터 시작하며 Ship은 100, 100 영역의 가운데에 올바르게 배치됩니다. Ship을 가운데 맞춤로 유지하려면 속성을 바인딩해야합니다.

class Game(Widget): 
    def __init__(self, **kwargs): 
     super(Game, self).__init__(**kwargs) 
     self.ship = Ship() 
     self.add_widget(self.ship) 
     self.bind(center=self.ship.setter('center')) 
관련 문제