Kivy如何设置ToggleButton组

时间:2017-10-17 16:32:15

标签: python kivy togglebutton

有人愿意解释为什么来自Kivy ToggleButton的群组名称必须是群组中某个按钮的ID之一吗?

我遇到了一个问题并且遇到了困难,最终发现唯一的解决方案是使用其中一个按钮的id名称,否则解释器会说组名未定义。我不明白为什么。我查看了Kivy Docs,我找不到任何有关团体的信息。它只说Toggle Buttons可以使用组来创建单选按钮样式活动。 我正在使用Kivy 1.10.0和Python 3.6.2

我在下面重新创建了这个问题。我对此非常感激。

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.togglebutton import ToggleButton

class toggling(BoxLayout):
    pass

class togglingApp(App):
    pass
if __name__ == "__main__":
    togglingApp().run()

kv文件:

toggling:

    <toggling>:
        orientation: "vertical"
        padding: 5
        spacing: 5
        BoxLayout:
            size_hint_y: None
            height: "40dp"

            Label:
                text: "Title"
        BoxLayout:
            size_hint_y: None
            height: "40dp"

            Label:
                size_hint_x: None
                width: "100dp"
                text: "Firstly"

            ToggleButton:
                text:"A1"
                group: a1
                id: a1
                on_press:
            ToggleButton:
                text:"A2"
                group: a1
                id: faulty
                on_press:

        BoxLayout:
            size_hint_y: None
            height: "40dp"
            Label:
                size_hint_x: None
                width: "100dp"
                text: "Secondly"
            ToggleButton:
                text:"B1"
                id: b1
                group: the_b_group
                on_press:

            ToggleButton:
                text:"B2"
                id: b2
                group: the_b_group
                on_press:

            ToggleButton:
                text:"B3"
                id: b3
                group: the_b_group
                on_press:

        BoxLayout:

背景(如果需要):

我的问题来自于错误,指出我的ToggleButton组名未定义。我有一些按预期工作的ToggleButtons,然后我尝试将一组类似的按钮复制并粘贴到一个新行,然后编辑标签。这个动作杀了应用程序。它不会运行,它说我的组名(对于新的按钮组)没有定义。

我正在尝试创建一个数据收集应用程序,它是一系列类别,每个系列都有2-5个切换按钮。我们的想法是点击每个组中的一个按钮,每个组中的数据填充一个列表视图,最终归档到数据库中。

不可否认,我的Python技能很弱,我只是在这几个月,但我的kivy技能较弱。 Kivy真的很棒,但无论出于何种原因,我发现Kivy完全不透明,我通常不会得到它正在做的事情。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

ToggleButton的group名称不需要来自其中一个ToggleButton的idgroup名称是一个字符串。有关详细信息,请参阅以下示例。

Toggle button

  

切换按钮也可以分组以制作单选按钮 - 组中只有一个按钮可以处于“向下”状态。组名可以是字符串或任何其他可散列的Python对象:

Programming Guide » Kv language » id

  

警告

     

为id分配值时,请记住该值不是字符串。   没有引号:好 - &gt; id:value,bad - &gt; id:'value'

实施例

main.py

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout


class toggling(BoxLayout):
    pass


class togglingApp(App):
    def build(self):
        return toggling()


if __name__ == "__main__":
    togglingApp().run()

toggling.kv

#:kivy 1.10.0

<toggling>:
    orientation: "vertical"
    padding: 5
    spacing: 5
    BoxLayout:
        size_hint_y: None
        height: "40dp"

        Label:
            text: "Title"
    BoxLayout:
        size_hint_y: None
        height: "40dp"

        Label:
            size_hint_x: None
            width: "100dp"
            text: "Firstly"

        ToggleButton:
            text:"A1"
            group: "a_group"
            id: a1
            on_press:
        ToggleButton:
            text:"A2"
            group: "a_group"
            id: faulty
            on_press:

    BoxLayout:
        size_hint_y: None
        height: "40dp"
        Label:
            size_hint_x: None
            width: "100dp"
            text: "Secondly"
        ToggleButton:
            text:"B1"
            id: b1
            group: "the_b_group"
            on_press:

        ToggleButton:
            text:"B2"
            id: b2
            group: "the_b_group"
            on_press:

        ToggleButton:
            text:"B3"
            id: b3
            group: "the_b_group"
            on_press:

    BoxLayout:

输出

App with ToggleButton