2023年8月1日 星期二

Kivy UIX篇 layout篇 ScatterLayout類 講解

簡述:

根據官方解釋:

1.This layout behaves just like a RelativeLayout. When a widget is added with position = (0,0) to a ScatterLayout, the child widget will also move when you change the position of the ScatterLayout. The child widget’s coordinates remain (0,0) as they are relative to the parent layout.

2.ScatterLayout is implemented using a Scatter widget, you can also translate, rotate and scale the layout using touches or clicks, just like in the case of a normal Scatter widget, and the child widgets will behave as expected.

意思是:

1.此佈局類似於RelativeLayout,ScatterLayout內子部件的參考點為ScatterLayout內的(0,0)位置,因此當ScatterLayout的位置改變時,內部子部件的位置也隨之更改。

2.ScatterLayout類繼承自Scatter類,因此可以使用觸摸或單擊來平移、旋轉和縮放ScatterLayout。

基本範例:

首先在main.py中寫上起手式:

from kivy.app import App
from kivy.uix.scatterlayout  import ScatterLayout


class MyLayout(ScatterLayout) :
    pass


class Myapp(App):

    def build(self):
        return MyLayout()


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

在以上程式碼中,我讓MyLayout類繼承ScatterLayout類,使得在my.kv中的<MyLayout>:可以繼承ScatterLayout類的特性。

在my.kv中寫上此段程式碼:

<MyLayout>:

    Button:
        size_hint:.2,.2
        text: 'A1'

    Label:
        pos_hint:{'top': 0.9}
        size_hint:.2,.2
        text: 'B2'

    Image:
        source: 'dog.jpg' #須將圖片檔案放在目前工作資料夾

執行結果如下:

ScatterLayout使用技巧:

1.ScatterLayout繼承自Scatter類,因此ScatterLayout的作用範圍請參考Scatter篇

2.在操作ScatterLayout時內部的物件會跟隨ScatterLayout改變

沒有留言:

張貼留言

精選文章

Kivy UIX篇 widget篇 TabbedPanel類 event篇 講解