2023年8月29日 星期二

Kivy UIX篇 widget篇 ToggleButton類 method篇 講解

若尚未看過Kivy UIX篇 widget篇 ToggleButton類 attribute篇 講解,建議看完之後對ToggleButton有一定了解在看這篇喔。

根據官網ToggleButton類繼承自kivy.uix.behaviors.togglebutton.ToggleButtonBehavior與 kivy.uix.button.Button,因此ToggleButton的method皆來自於此,詳細的可以參考Kivy UIX篇 widget篇 Button類 method篇 講解與其父類的介紹,基本上是通用的。

在官網中介紹ToggleButton的頁面中沒有提到ToggleButton類別有專用的method,所以這邊就意思意思呈現一個範例。

這邊主要呈現當ToggleButton狀態不同的影響,我想這也是Progress Bar的主要目的。

程式碼如下:

from kivy.app import App
from kivy.uix.gridlayout import GridLayout
from kivy.properties import ObjectProperty


#先讓MyLayout繼承GridLayout
class MyLayout(GridLayout):
    
    a1 = ObjectProperty()
    a2 = ObjectProperty()
    a3 = ObjectProperty()
    a4 = ObjectProperty()

    def btn1(self):
        if (self.a1.state=='down') and (self.a2.state=='down') and (self.a3.state=='down'):
            print('all pressed')

函數btn1的內容為:當a1的狀態為'down'(被按下)且當a2的狀態為'down'(被按下)且當a3的狀態為'down'(被按下)時,輸出'all pressed'(state屬性來自於Button Behavior,是ToggleButton父類的父類,在Behavior篇中會有更詳細的介紹)

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

<MyLayout>:

    a1: b1
    a2: b2
    a3: b3
    a4: b4

    rows: 2

    ToggleButton:
        id: b1
        text: 'A1'

    ToggleButton:
        id: b2
        text: 'B2'

    ToggleButton:
        id: b3
        text: 'C3'

    Button:
        id: b4
        text: 'press me'
        on_press: root.btn1()

當按下id為b4的Button時,觸發btn1函數

執行結果如下:



沒有留言:

張貼留言

精選文章

Kivy UIX篇 widget篇 TabbedPanel類 event篇 講解