2023年11月23日 星期四

Kivy UIX篇 widget篇 Spinner類 attribute篇 講解

簡述

根據官方解釋:

Spinner is a widget that provides a quick way to select one value from a set. In the default state, a spinner shows its currently selected value. Touching the spinner displays a dropdown menu with all the other available values from which the user can select a new one.

意思是Spinner 是一個小部件,它提供了一種從一組值中選擇一個值的快速方法。 在默認狀態下,微調器顯示其當前選擇的值。 觸摸微調器會顯示一個下拉菜單,其中包含所有其他可用值,用戶可以從中選擇一個新值。

示意圖如下:

基本範例

首先在main.py中寫上起手式:

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


class MyLayout(GridLayout):
    pass


class Myapp(App):

    def build(self):
        return MyLayout()


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

在以上程式碼中,我讓MyLayout類繼承GridLayout類,使得在my.kv中的<MyLayout>:可以繼承GridLayout類的特性。

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

<MyLayout>:

    rows: 2
    size_hint: (None, None)
    size: (400, 300)
    pos_hint: {'center_x': .5, 'y': .2}
    #以上程式碼主要是為了更好呈現結果而調整GridLayout

    Spinner:
        values: 'Home', 'Work', 'Other', 'Custom' #此下拉式選單的選項

    Label:
        text: 'abc'

執行結果如下:

Spinner使用技巧:

1.利用text屬性指定Spinner的標題,或者利用text_autoupdate屬性指定value中第一個值作為預設

程式碼如下:

<MyLayout>:

    rows: 2
    size_hint: (None, None)
    size: (400, 300)
    pos_hint: {'center_x': .5, 'y': .2}

    Spinner:
        values: 'Home', 'Work', 'Other', 'Custom'
        text: 'type'
        #text_autoupdate: True

    Label:
        text: 'abc'

執行結果如下:

(注意!若同時使用text與text_autoupdate參數,則text_autoupdate會蓋過text。)

2.利用sync_height參數來將每一個選項的單元格調整至與Spinner相同

程式碼如下:

<MyLayout>:

    rows: 2
    size_hint: (None, None)
    size: (400, 300)
    pos_hint: {'center_x': .5, 'y': .2}

    Spinner:
        values: 'Home', 'Work', 'Other', 'Custom'
        sync_height: True

    Label:
        text: 'abc'

執行結果如下:



沒有留言:

張貼留言

精選文章

Kivy UIX篇 widget篇 TabbedPanel類 event篇 講解