若尚未看過Kivy UIX篇 widget篇 ProgressBar類 attribute篇 講解,建議看完之後對ProgressBar有一定了解在看這篇喔。
根據官網ProgressBar類繼承自 kivy.uix.widget.Widget,因此ProgressBar的method皆來自於此。
在官網中介紹ProgressBar的頁面中沒有提到ProgressBar類別有專用的method,所以這邊就意思意思呈現一個範例,詳細的可以參考Kivy UIX篇 widget篇 widget類 method篇 講解,基本上是通用的。
這邊主要呈現Progress Bar如何被其他widget影響,我想這也是Progress Bar的主要目的(應該沒有會去想點Progress Bar吧........)
首先在main.py中寫下程式碼:
from kivy.app import App from kivy.uix.gridlayout import GridLayout from kivy.properties import ObjectProperty import time class MyLayout(GridLayout): a1 = ObjectProperty(None) def btn1(self): while (self.a1.value_normalized<1): self.a1.value_normalized = self.a1.value_normalized+0.01 print(self.a1.value_normalized) time.sleep(0.1) class Myapp(App): def build(self): return MyLayout() if __name__ == '__main__': Myapp().run()
btn1函數的內容為:當Progress Bar的self.a1.value_normalized<1時,我就不斷地讓self.a1.value_normalized+0.01
在my.kv中寫上此段程式碼:
<MyLayout>: a1:b1 rows: 2 ProgressBar: id: b1 min: 0 max: 100 value_normalized:.5 Button: text: 'start' on_press: root.btn1()
執行結果如下:
注意!!! 當以上程式碼執行時,讀者可能會以為python當機了(整個視窗無法移動、出現沒有回應...),但讀者稍微觀察pycharm發現城市依然在跑,為什麼會這樣呢?可以參考流程圖篇或者先跳過。
沒有留言:
張貼留言