[英]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.