簡述
根據官方解釋:
The PageLayout class is used to create a simple multi-page layout, in a way that allows easy flipping from one page to another using borders.
意思是PageLayout用於創建簡單的多頁layout,它可以藉由滑動邊框來切換子物件。
示意圖如下:
基本範例
首先在main.py中寫上起手式
from kivy.app import App from kivy.uix.pagelayout import PageLayout class MyLayout(PageLayout): pass class Myapp(App): def build(self): return MyLayout() if __name__ == '__main__': Myapp().run()
在以上程式碼中,我讓MyLayout類繼承PageLayout類,使得在my.kv中的<MyLayout>:可以繼承PageLayout類的特性。
在my.kv中寫上此段程式碼:
<MyLayout>: # 添加背景顏色(此段只是拿來呈現PageLayout的範圍,後面會有更詳細的解說) # 不過畫面幾乎會被添加的子物件填滿,所以看不出什麼效果 canvas: Color: rgb: [.112, .358, .132] Rectangle: pos: self.pos size: self.size # 添加Button物件 (此段只是拿來呈現Button會如何出現在PageLayout上,後面會有更詳細的解說) Button: text: 'A1' Button: text: 'B2' Button: text: 'C3' Button: text: 'D4' Button: text: 'E5'
執行結果如下:
PageLayout使用技巧:
1.根據官方敘述:PageLayout does not currently honor the size_hint, size_hint_min, size_hint_max, or pos_hint properties.,意思是PageLayout 當前不支持 size_hint、size_hint_min、size_hint_max 或 pos_hint 屬性,也就是說我們無法調整子物件在PageLayout中的大小與位置。
<MyLayout>: canvas: Color: rgb: [.112, .358, .132] Rectangle: pos: self.pos size: self.size Button: text: 'A1' size_hint: .1, .1 #我們試圖讓物件依照layout的視窗大小調整水平長度與垂直長度 Button: text: 'B2' size_hint: .1, .1 #我們試圖讓物件依照layout的視窗大小調整水平長度與垂直長度 Button: text: 'C3' Button: text: 'D4' Button: text: 'E5'
執行結果如下:
可以發現與原本程式碼的執行結果相同,沒有因為我們增加size_hint參數而改變大小,符合預期
沒有留言:
張貼留言