मैं किवी में ग्रिडलायआउट बनाना चाहता हूं जिसमें कई आयत के साथ कुछ आयत बटन हैं। ऐसा करने के लिए, मैं छवि को स्केल करना चाहता हूं (जिस तरह से मैं इसे करने के लिए नीचे दिखाया गया है) और फिर उन हिस्सों को फसल/छुपाएं जो विजेट सीमाओं को ओवरफ़्लो करते हैं। आकार बदलना अच्छा काम करता है, लेकिन मैं यह नहीं समझ सकता कि आयत के बाहर वाले हिस्सों को कैसे छिपाना/फसल करना है। उदाहरण के लिए: यदि विजेट में 10px x 10px के आयाम हैं और मेरी छवि 100px x 200px है, तो मैं इसे 10px x 20px पर रीज़िज कर दूंगा और इसे विजेट में केंद्रित कर दूंगा, लेकिन नीचे 5px और abowe दिखाई देगा। मैं नहीं चाहता कि। :) क्लाउड किसी ने मुझे इस समस्या से मदद की है?Kivy: विजेट को अतिप्रवाह की तरह व्यवहार कैसे करें: छुपा
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))
हाँ, मुझे यही चाहिए! धन्यवाद। –