Python kivy 较低的小部件位置

Posted

技术标签:

【中文标题】Python kivy 较低的小部件位置【英文标题】:Python kivy lower widget position 【发布时间】:2022-01-23 06:58:01 【问题描述】:

您好,我正在用 kivy 制作足球游戏,每当游戏结束时,足球就会在屏幕中间,但比我想要的要高一点。我怎样才能使足球低一点?下面是我的代码!任何帮助都会得到帮助!谢谢!

main.py

def game_over(self):
    self.root.ids.game_screen.ids.ball.center = self.root.center
    print("game over")
    self.frames.cancel()
    self.root.ids.game_screen.ids.start_button.disabled = False
    self.root.ids.game_screen.ids.start_button.opacity = 1
    self.root.ids.game_screen.ids.over.opacity = 1

gamescreen.kv

    Ball:
        source: "icons/ball.png"
        size_hint: None, None
        size: 525, 525
        center_x: root.width / 2
        id: ball

【问题讨论】:

【参考方案1】:

您可以使用FloatLayout 然后添加自定义pos_hint 属性来更改球的位置

示例:

from kivy.app import App

from kivy.uix.floatlayout import FloatLayout
from kivy.uix.label import Label


class MainApp(App):
    def build(self):
        myLayout = FloatLayout()

        myLayout.add_widget(Label(text="Hello, World!", pos_hint="center_x":.5, "center_y":.6))

        return myLayout

MainApp().run()

KV 语言示例:

from kivy.app import App

from kivy.lang.builder import Builder

KV = """
FloatLayout:
    Label:
        text:"Hello, World"
        pos_hint:"center_x":.5, "center_y":.6
"""

class MainApp(App):
    def build(self):
        self.kv = Builder.load_string(KV)
        return self.kv

MainApp().run()

两个代码的结果都是一个标签,在屏幕中间稍上方带有文本“Hello, World”

【讨论】:

我只希望我的足球在比赛结束后与第一张图片上的位置相同 尝试将此行添加到您的 game_over 函数中:self.root.ids.game_screen.ids.ball.center_x = self.root.width/2

以上是关于Python kivy 较低的小部件位置的主要内容,如果未能解决你的问题,请参考以下文章

Kivy中的动态网格,每个网格元素包含多个小部件

Kivy 如何访问子小部件中的小部件

如何使用On_Press更改动态创建的小部件的BG颜色并使用Pickle保存? (与Kivy的Python)

如何禁用 Kivy 中的小部件?

Kivy 语言可以访问继承的布局和小部件吗?

使用python / kivy处理小部件放置以解决屏幕旋转的好方法是啥?