किवी में एक लेबल की स्थिति बदलना

Aug 16 2020

मैं kivy प्रोग्रामिंग में नया हूँ और जब ऐसा लगता है कि इस समस्या के बारे में ऑनलाइन बहुत सारे दस्तावेज़ हैं, तो मुझे इसमें से कोई भी समझ में नहीं आता है इसलिए मुझे आशा है कि आप मदद कर सकते हैं।

मेरे पास 4 बटन और एक लेबल है, बटन दबाकर, मैं उस दिशा में लेबल को स्थानांतरित करने की उम्मीद कर रहा हूं। मेरे पास दो वैरिएबल pX और pY हैं जो कि लेबल की स्थिति हैं और चाहते हैं कि जब भी इन दोनों को अपडेट किया जाता है, हर बार इसकी स्थिति को अपडेट करें। अग्रिम में धन्यवाद।

// main.py
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.widget import Widget
from kivy.graphics import Rectangle, Color
from kivy.core.window import Window
from kivy.config import Config
from kivy.uix.floatlayout import FloatLayout

Window.size = (900, 600)
Config.set('graphics', 'resizable', True)


class FloatLayout(FloatLayout):
    pX = 0.6
    pY = 0.1


class FenetreApp(App):
    def build(self):
        return FloatLayout()


FenetreApp().run()
//fenetre.kv
<Button>:
     size_hint: 0.1, 0.1
     background_color: 0.1, 0.5, 0.6, 1


<Label>:
     size_hint: 0.1, 0.1
     background_color: 1, 0, 0, 1
     canvas.before:
          Color:
               rgb: 0.1, 0.6, 0
          Rectangle:
               pos: self.pos
               size: self.size

<FloatLayout>:
     Button:
          text: "Up"
          pos_hint: {"x":0.8, "top":1}
          on_press: root.pY= root.pY +0.1
     Button:
          text: "Down"
          pos_hint: {"x":0.8, "top":0.8}
          on_press: root.pY= root.pY -0.1
     Button:
          text: "Left"
          pos_hint: {"x":0.7, "top":0.9}
          on_press: root.pX= root.pX -0.1
     Button:
          text: "Right"
          pos_hint: {"x":0.9, "top":0.9}
          on_press: root.pX= root.pX +0.1


     Label:
          name: "L1"
          text: "I wanna move"
          pos_hint: {"x":root.pY, "top":root.pY} ```

जवाब

1 320V Aug 16 2020 at 08:48

आपको संख्यात्मक मानों के लिए NumericProperty का उपयोग करने की आवश्यकता है। इसके अलावा, kivy अपने स्वयं के बच्चों के पदों, ग्रंथों और अन्य सामानों को अपडेट नहीं करता है। लेकिन अगर आप का उपयोग नहीं करना चाहते हैं, तो इस कोड की जांच करें। मुझे आशा है कि यह कैसे काम करता है :

from kivy.app import App
from kivy.core.window import Window
from kivy.lang import Builder
Window.size = (900, 600)
kv = Builder.load_string('''
FloatLayout:
    pY: .5
    pX: .5
    Button:
        size_hint:.1,.1
        background_color: 0.1, 0.5, 0.6, 1
        text: "Up"
        pos_hint: {"x":0.8, "y":.8}
        on_press: self.parent.pY+=.1
    Button:
        size_hint:.1,.1
        background_color: 0.1, 0.5, 0.6, 1
        text: "Down"
        pos_hint: {"x":0.8, "top":0.8}
        on_press: self.parent.pY-=.1
    Button:
        size_hint:.1,.1
        background_color: 0.1, 0.5, 0.6, 1
        text: "Left"
        pos_hint: {"x":0.7, "top":0.9}
        on_press: self.parent.pX-= .1
    Button:    
        size_hint:.1,.1
        background_color: 0.1, 0.5, 0.6, 1
        text: "Right"
        pos_hint: {"x":0.9, "top":0.9}
        on_press: self.parent.pX+=.1
    Label:
        size_hint: .1,.1
        text: "I like to moving moving"
        pos_hint: {"x":self.parent.pX, "top":self.parent.pY}
''')
class sahm(App):
    def build(self):
        return kv
if __name__ == '__main__':
    sahm().run()