若尚未看過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函數
執行結果如下:
沒有留言:
張貼留言