我如何在kv文件中使用相同的小部件

问题描述 投票:0回答:1

我想在kv文件中仅定义一次小部件(在这种情况下为微调器)的形式,但是可以在多个屏幕上使用它。从其他屏幕调用了不同的输入屏幕(菜单1等),其中许多屏幕具有我想要看起来相同的微调器。在这种情况下,我使用的是简单的微调器“ 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非常陌生,因此,我感谢您能提供的任何意见。

kivy spinner kivy-language
1个回答
0
投票

首先创建您的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]
© www.soinside.com 2019 - 2024. All rights reserved.