Voglio creare GridLayout in Kivy con molti pulsanti rettangolari con alcune immagini personalizzate con dimensioni diverse. Per fare ciò, voglio ridimensionare l'immagine (il modo in cui voglio farlo è mostrato di seguito) e quindi ritagliare/nascondere le parti che traboccano i bordi del widget. Il ridimensionamento funziona bene, ma non riesco a capire come nascondere/ritagliare le parti che sono al di fuori del rettangolo. Ad esempio: se il widget ha dimensioni di 10 x 10 px e la mia immagine è di 100 x 200 px, la ridimensionerò a 10 x 20 px e la centreremo nel widget, ma i 5 pixel in basso e in basso saranno visibili. Non voglio quello. :) Cloud qualcuno mi aiuti con questo problema?Kivy: Come far funzionare il widget come overflow: nascosto
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))
Sì, questo è quello che mi serviva! Grazie. –