2023年9月18日 星期一

Kivy property篇 ColorProperty類 講解

簡述

ColorProperty類專門存放kivy中的rgba顏色串列,預設值為[1.0, 1.0, 1.0, 1.0](白色)。

基本範例

在main.py中寫上此段程式碼:

from kivy.app import App
from kivy.uix.stacklayout  import StackLayout
from kivy.properties import ColorProperty


class MyLayout(StackLayout) :
    a1 = ColorProperty([.134,.558,.944])

    def btn1(self):
        self.a1 = 'sandybrown'

    def on_a1(self,instance,x):
        print('color change to {}'.format(self.a1))


class Myapp(App):

    def build(self):
        return MyLayout()


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

在以上程式碼中,我在MyLayout中宣告a1為ColorProperty類,其值為[.134,.558,.944],並宣告btn1方法,當btn1方法被呼叫時,a1的值被指定為'sandybrown',最後,當a1發生改變時,自動呼叫on_a1方法,列印'color change to {}'.format(self.a1)

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

<MyLayout>:
    orientation: 'rl-tb'

    canvas:
        Color:
            rgb: root.a1

        Rectangle:
            pos: self.pos
            size: self.size

    Button:
        text: 'A1'
        size_hint: 0.3,0.3
        on_press: root.btn1()

在以上程式碼中,我指定canvas的rgba為root.a1(root即為MyLayout)

執行結果如下:

ColorProperty使用技巧:

1.如基本範例所示,ColorProperty()中不只可以填入list還可以填入字串

一些實用的顏色可以參考以下網址:

https://www.w3.org/TR/SVG11/types.html#ColorKeywords

沒有留言:

張貼留言

精選文章

Kivy UIX篇 widget篇 TabbedPanel類 event篇 講解