首页 > 解决方案 > Kivy 切换按钮不稳定的行为

问题描述

试图将清单(实际上以 xml 表示)从 tkinter 翻译成 kivy。我放弃了使用 CheckBox 并切换到 ToggleButtons。这奏效了——在一种时尚之后。不幸的是,这些切换似乎是随机的未经检查或检查。我确定我犯了一个基本错误,但我看不到它。

    import kivy
    from kivy.app import App
    from kivy.uix.widget import Widget
    from kivy.uix.button import Button
    from kivy.uix.label import Label
    from kivy.uix.togglebutton import ToggleButton
    from kivy.uix.gridlayout import GridLayout

    class ButtonList(GridLayout):
        def __init__(self, **kwargs):
            super(ButtonList, self).__init__(**kwargs)

            listRoot = [
                "Controls",
                "Ballast",
                "Straps",
                "Instruments",
                "Trim",
                "Canopy",
                "Brake"
            ]

            self.buttons = []
            for child in listRoot:
                b = ToggleButton(text=child, state="normal")
                self.buttons.append(b)
                self.add_widget(b)

            submit = Button(text="Submit", on_press=self.on_submit)
            self.add_widget(submit)

            self.output = Label(text="Output")
            self.add_widget(self.output)

        def on_submit(self, instance):
            out = "Selection: "
            for i in self.buttons:
                 if i.state == "down":
                    out += i.text + " "
            self.output.text = out


    class ButtonListApp(App):
        def build(self):
            return ButtonList()


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

和.kv

    <ButtonList>:
        cols: 1

我的意图是将我的程序的主要布局放入 kv 文件中,其中包含由这个 python 函数创建的两个清单(切换按钮列表)。但首先它需要自行停止检查和取消检查值。

    [INFO   ] [MTD         ] </dev/input/event4> range touch major is 0 - 0
    [INFO   ] [MTD         ] </dev/input/event10> range touch major is 0 - 0
    [INFO   ] [MTD         ] </dev/input/event4> range touch minor is 0 - 0
    [INFO   ] [MTD         ] </dev/input/event10> range touch minor is 0 - 0

由于它适用于 watney,并且我认为“范围触摸主要 0 - 0”看起来无效,因此我尝试了不同的鼠标垫。问题消失了。我猜 Kivy 或 Ubuntu 不喜欢我的鼠标。任何有关修复的建议都会有所帮助。

标签: pythonkivytogglebutton

解决方案


推荐阅读