2023年8月25日 星期五

Kivy UIX篇 widget篇 ProgressBar類 method篇 講解

若尚未看過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發現城市依然在跑,為什麼會這樣呢?可以參考流程圖篇或者先跳過。

沒有留言:

張貼留言

精選文章

Kivy UIX篇 widget篇 TabbedPanel類 event篇 講解