Как использовать тот же виджет в файле kv - PullRequest
0 голосов
/ 05 февраля 2020

Я хотел бы определить форму виджета (в данном случае спиннера) только один раз в файле kv, но использовать его с нескольких экранов. Различные экраны ввода (menu1, et c) вызываются с других экранов, у многих из них есть счетчики, которые я хочу выглядеть одинаково. В этом случае я использую простой счетчик «color_spin».

Я открываю menu1 из другого окна, и это, кажется, работает:

<menu1>:
    name: "menu1"
    GridLayout:
        cols:1
        Label:
            text: "Properties"
            size_hint: 0.6,0.2
            pos_hint: {"x":0.2,"top":1}
        Spinner:
            id: color
            size_hint_max_y: 50
            text: 'Color'
            values: 'White','Purple','Blue','Green','Yellow','Orange','Red','Black','Grey'
            # Callback
            on_text: [do my thing]

Но я хотел бы иметь только 1 "color_spin "вызывается из разных меню, поэтому я хотел бы сделать что-то вроде этого:

<menu1>:
    name: "menu1"
    GridLayout:
        cols:1
        Label:
            text: "Properties"
            size_hint: 0.6,0.2
            pos_hint: {"x":0.2,"top":1}
        Spinner:
            [use spinner "color_spin", but how?]

<color_spin>:
    Spinner:
        id: color
        size_hint_max_y: 50
        text: 'Color'
        values: 'White','Purple','Blue','Green','Yellow','Orange','Red','Black','Grey'
        # Callback
        on_text: [do my thing]

Я очень новичок в kivy, поэтому я ценю любой вклад, который вы можете дать.

1 Ответ

0 голосов
/ 05 февраля 2020

Сначала создайте ColorSpinner:

<ColorSpinner@Spinner>:
    size_hint_max_y: 50
    text: 'Color'
    values: 'White','Purple','Blue','Green','Yellow','Orange','Red','Black','Grey'

, а затем добавьте его куда хотите:

<menu1>:
    name: "menu1"
    GridLayout:
        cols:1
        Label:
            text: "Properties"
            size_hint: 0.6,0.2
            pos_hint: {"x":0.2,"top":1}
        ColorSpinner:
            id: menu1_color
            # Callback
            on_text: [do my thing]

<color_spin>:
    ColorSpinner:
        id: color
        # Callback
        on_text: [do my thing]
...