मैं बिल्डर में आयत को बदलने या हटाने का अवसर चाहता हूं, लेकिन मुझे विशेषता त्रुटि मिलती है। मेरे द्वारा यह कैसे किया जा सकता है? मुझे आशा है कि आप मेरी मदद करेंगे

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.image import Image
from kivy.lang import Builder
from kivy.core.window import Window
from kivy.graphics import Color, Rectangle
Builder.load_string('''
<RootWidget>
    FloatLayout:
        id: layout
        canvas.before:
            Rectangle:
                id: image
                size: (100, 180)
                pos: (223, 191)
                source:'image.gif'
''')
class RootWidget(FloatLayout):
    def __init__(self, **kwargs):
        super(RootWidget, self).__init__(**kwargs)
        self.ids.layout.remove_widget(self.ids.image)

class WindowApp(App):
    def build(self):
        return RootWidget()

if __name__ == '__main__':
    WindowApp().run()
0
pinkcat 21 नवम्बर 2019, 17:36
आप अंतिम परिणाम क्या प्राप्त करना चाहते हैं? शायद इसे हासिल करने का एक और आसान तरीका है।
 – 
adn05
21 नवम्बर 2019, 18:10

1 उत्तर

दुर्भाग्य से, आप कैनवास ऑब्जेक्ट का id सेट नहीं कर सकते। यहां एक समाधान है: विचार करें कि आप अपने आयत की source विशेषता को बदलना चाहते हैं। अपने FloatLayout में rectangle_image: "image.gif" सेट करें, फिर अपने आयत में source: self.rectangle_image सेट करें। अब आप FloatLayout को इसके id से संदर्भित कर सकते हैं और इसके rectangle_image चर को बदल सकते हैं, और यह स्वचालित रूप से आयत की source विशेषता को अपडेट कर देगा!

0
Erik 21 नवम्बर 2019, 18:46