簡體   English   中英

浮動布局中的動畫KIVY

[英]Animating in float layout KIVY

我是python和kivy的新手。 我正在嘗試一個小型游戲,我很驚訝自己的開始,我想使用浮動布局,並使小部件從上到下跌落。 小部件的大小為(0.1,0.1),運動動畫將以像素為選項,我如何才能知道布局中x和y角像素的最大限制,我試圖通過使用來自Module:kivy.metrics的dp(value),但是僅顯示為0,0。

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.metrics import dp

class Test(FloatLayout):
    def __init__(self, **kwargs):
        super(Test,self).__init__(**kwargs)
        print(dp(self.size))


class game(App):
    def build(self):
        return Test()

if __name__ == '__main__':
    game().run()

代碼只是我嘗試獲取dp的示例。 如何在不知道最大像素的情況下移動小部件。

初始化時,布局小部件的默認Widget.size似乎是(1,1),如果您沒有手動指定,但是在小部件創建時(即Widget.__init__ ),您無法從中獲取任何其他大小值它。

創建小部件並從App.build方法返回后,它會自動作為窗口下方的根小部件添加到應用程序的小部件樹中。

當將小部件添加到父級時,它也會根據其大小提示值(相對於其父級大小)進行調整大小。 默認的Widget.size_hint值也是(1,1),這使其縮放到父大小,在這種情況下為窗口大小。

發生這種情況后,方可你widget的最終尺寸,例如,在App.on_start方法得到之后調用App.build

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout

class Test(FloatLayout):
    def __init__(self, **kwargs):
        super(Test,self).__init__(**kwargs)
        print(self.parent)
        # None
        print(self.get_parent_window())
        # None
        print(self.get_root_window())
        # None
        print(self.size)
        # [1, 1]
        print(self.size_hint)
        # [1, 1]

class game(App):
    def build(self):
        print(self.root)
        # None
        return Test()

    def on_start(self):
        print(self.root)
        # <__main__.Test object at 0x10a9d8a10>
        print(self.root.parent)
        # <kivy.core.window.window_pygame.WindowPygame object at 0x10a90d6d0>
        print(self.root.get_parent_window())
        # <kivy.core.window.window_pygame.WindowPygame object at 0x10a90d6d0>
        print(self.root.get_root_window())
        # <kivy.core.window.window_pygame.WindowPygame object at 0x10a90d6d0>
        print(self.root.size)
        # [800, 600]

if __name__ == '__main__':
    game().run()

Kivy文檔中描述了所有應用程序和窗口小部件的生命周期和行為,但在指南和API參考之間卻遍布各處。 絕對不要錯過Widget編程指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM