2013-05-23 24 views
5

Kivy'de GridLayout oluşturmak istiyorum, farklı boyutlarda bazı özel resimlerle birçok dikdörtgen düğme. Bunu yapmak için, görüntüyü ölçeklendirmek istiyorum (bunu yapmak için aşağıda gösterilen şekilde gösterilmiştir) ve daha sonra, widget sınırlarını aşan parçaları kırpın/gizleyin. Yeniden boyutlandırma güzel çalışıyor, ancak dikdörtgenin dışındaki bölümlerin nasıl gizleneceğini/kırpılacağını anlayamıyorum. Örneğin: Widget 10px x 10px boyutlarındaysa ve resmim 100px x 200px ise 10px x 20px'e kadar rezerve edip widget'ı ortalayın, ancak aşağıdaki 5px ve abowe görünecektir. Bunu istemiyorum. :) Biri bana bu problemle yardım etsin mi?Kivy: Widget, taşma gibi davranır: gizli

class PlaceIcon(Widget): 
    def __init__(self,image_path, **kwargs): 
     super(PlaceIcon, self).__init__(**kwargs) 
     self.bind(size=self.adjust_size) 
     self.image = Image(source=image_path) 
     self.image_path = image_path 

    def adjust_size(self,*args): 
     (a,b) = self.image.texture.size 
     (x,y) = self.size 
     (x1,y1) = self.pos 
     if x > y: 
      scale = x/a 
     else: 
      scale = y/b 
     x1 -= (scale*a-x)/2 
     y1 -= (scale*b-y)/2 
     with self.canvas: 
      self.canvas.clear() 
      self.background = Rectangle(texture=self.image.texture, pos=(x1,y1), size=(scale*a,scale*b)) 

cevap

İlgili konular