【问题标题】:Python kivy lower widget positionPython kivy 较低的小部件位置
【发布时间】: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

【问题讨论】:

    标签: python kivy kivy-language


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多