【问题标题】:Changing position of a Label in Kivy在 Kivy 中更改标签的位置
【发布时间】:2020-12-05 11:49:50
【问题描述】:

我是 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} ```

【问题讨论】:

    标签: python kivy label position kivy-language


    【解决方案1】:

    您需要使用 NumericProperty 来获取数值。否则,kivy 不会更新自己的孩子位置、文本和其他内容。但是如果您不想使用它们,请检查此代码。我希望它干净地了解它是如何工作的: ma​​in.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)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 2017-06-29
    • 1970-01-01
    相关资源
    最近更新 更多