Kivy: cómo hacer que el widget se comporte como un desbordamiento: oculto

Quiero crear GridLayout en Kivy con muchos botones rectangulares con algunas imágenes personalizadas con diferentes tamaños. Para hacerlo, quiero escalar la imagen (la forma en que querría hacer esto se muestra a continuación) y luego recortar / ocultar las partes que desbordan los bordes del widget. El cambio de tamaño funciona bien, pero no puedo descubrir cómo ocultar / recortar las partes que están fuera del rectángulo. Por ejemplo: si el widget tiene dimensiones de 10px x 10px y mi imagen es de 100px x 200px, lo rezisaré a 10px x 20px y lo centraré en el widget, pero el 5px que se muestra a continuación será visible. No quiero eso. 🙂 Cloud alguien me ayude con este problema?

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*ax)/2 y1 -= (scale*by)/2 with self.canvas: self.canvas.clear() self.background = Rectangle(texture=self.image.texture, pos=(x1,y1), size=(scale*a,scale*b)) 

Yo diría que mirar Texture.get_region: http://kivy.org/docs/api-kivy.graphics.texture.html#kivy.graphics.texture.Texture.get_region

Por lo tanto, puede usar solo la parte de la textura que desea mostrar y pasar como si fuera una textura completamente diferente.

Otra forma sería usar StencilView, pero creo que aquí get_region es mejor.