Chcę utworzyć GridLayout w Kivy z wieloma prostokątnymi przyciskami z niestandardowymi obrazami o różnej wielkości. Aby to zrobić, chcę przeskalować obraz (sposób, w jaki to zrobię, jest pokazany poniżej), a następnie przyciąć/ukryć części, które przepełniają granice widżetów. Zmiana rozmiaru działa dobrze, ale nie mogę wymyślić, jak ukryć/przyciąć te części, które znajdują się poza prostokątem. Na przykład: jeśli widget ma wymiary 10px x 10px, a mój obraz ma 100px x 200px, zarezerwuję go na 10px x 20px i wyśrodkuję go w widgecie, ale 5px poniżej i abowe będą widoczne. Nie chcę tego. :) Cloud ktoś mi pomóc z tym problemem?Kivy: Jak sprawić, aby widget zachowywał się jak przepełnienie: ukryty
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))
Tak, właśnie tego potrzebowałem! Dziękuję Ci. –