Python 更改Kivy中标签的位置

Python 更改Kivy中标签的位置,python,kivy,label,position,kivy-language,Python,Kivy,Label,Position,Kivy Language,我是kivy编程新手,虽然网上似乎有很多关于这个问题的文档,但我似乎一点都不懂,所以我希望你能帮我 我有4个按钮和一个标签,按下这些按钮,我希望标签能朝那个方向移动。 我有两个变量pX和pY,它们是标签的位置,希望它在每次更新这两个变量时都更新其位置。 提前谢谢 // main.py from kivy.app import App from kivy.uix.floatlayout import FloatLayout from kivy.uix.widget import Widget fr

我是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
:
大小提示:0.1,0.1
背景颜色:0.1,0.5,0.6,1
:
大小提示:0.1,0.1
背景颜色:1,0,0,1
在以下情况之前:
颜色:
rgb:0.1,0.6,0
矩形:
pos:self.pos
大小:self.size
:
按钮:
正文:“向上”
pos_提示:{“x”:0.8,“top”:1}
按:root.pY=root.pY+0.1
按钮:
文字:“向下”
pos_提示:{“x”:0.8,“top”:0.8}
按:root.pY=root.pY-0.1
按钮:
文本:“左”
pos_提示:{“x”:0.7,“top”:0.9}
按下按钮:root.pX=root.pX-0.1
按钮:
正文:“对”
pos_提示:{“x”:0.9,“top”:0.9}
按下:root.pX=root.pX+0.1
标签:
名称:“L1”
文字:“我想搬家”
pos_提示:{“x”:root.pY,“top”:root.pY}```

您需要对数值使用NumericProperty。否则,kivy不会更新自己孩子的位置、文本和其他内容。但如果您不想使用它们,请检查此代码。我希望它能清楚地理解它的工作原理: main.py:

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()

谢谢你的帮助,它确实起作用了!因此,变量声明必须在.kv文件中的类中。正如我所说,您需要使用kivy.properties来更改.py文件。示例:pX=NumericProperty(.6)
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()