如何访问嵌套按钮的on_press处理程序?

时间:2019-12-03 10:28:06

标签: python python-3.x kivy kivy-language

我目前正在设计Kivy应用程序,在这里我想使我的许多组件可重复使用。我有一些遵循以下样式的代码。

<ListButtonGroup@BoxLayout>:
    orientation: 'vertical'
    spacing: 10

    up: up
    down: down
    list: list

    BoxLayout:
        orientation: 'horizontal'
        size_hint: 1.0, None

        Button:
            id: up
            text: 'up'
            size_hint: 1.0, None
            height: 50
        Button:
            id: down
            text: 'down'
            size_hint: 1.0, None
            height: 50

    ScrollList:
        id: list
        size_hint: 1.0, 0.8

我希望在多个地方使用该类,但我不知道如何制作该类,以便可以将on_press处理程序分配给这些按钮,以便在多个不同区域使用该类,以实现不同的目的和功能。 / p>

1 个答案:

答案 0 :(得分:2)

您可以为此使用一些属性:

<ListButtonGroup@BoxLayout>:
    orientation: 'vertical'
    spacing: 10

    up: up
    down: down
    list: list

    callback1: lambda: None
    callback2: lambda: None

    BoxLayout:
        orientation: 'horizontal'
        size_hint: 1.0, None

        Button:
            id: up
            text: 'up'
            size_hint: 1.0, None
            height: 50
            on_press: root.callback1()
        Button:
            id: down
            text: 'down'
            size_hint: 1.0, None
            height: 50
            on_press: root.callback2()

    ScrollList:
        id: list
        size_hint: 1.0, 0.8

之后,您只需使用:

ListButtonGroup
    callback1: lambda x: print("1")
    callback2: lambda x: print("2")