如何在不选择任何内容的情况下关闭kivy中的下拉菜单

时间:2017-02-26 13:16:59

标签: python kivy dropdown dismiss

我稍微修改了此处找到的代码(Creating DropDown in kivy with only kv file)。

这是python代码:

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

class CustomDropDown(BoxLayout):
    pass

class ttddkvApp(App):
    def build(self):
        return CustomDropDown()

if __name__=='__main__':
    ttddkvApp().run()

这是kv代码:

<CustomDropDown>:

    Button:
        id: mainbtn
        text: 'Difficulty Level'
        on_release: dropdown.open(self)
        size_hint_y: None
        height: 50

    DropDown:
        id: dropdown
        on_parent: self.dismiss()
        on_select: mainbtn.text = '{}'.format(args[1])
        Button:
            text: 'easy'
            size_hint_y: None
            height: 50
            on_release: dropdown.select(self.text)

        Button:
            text: 'difficult'
            size_hint_y: None
            height: 50
            on_release: dropdown.select(self.text)

代码工作正常,因为原始代码可以:当我按下主按钮时,下拉菜单会打开,当我在菜单中选择一个项目或单击菜单外的某个位置时它会消失。还行吧。

我的问题是: 当我再次按下主按钮时,下拉菜单不会消失(解除)。当我这样做时,菜单再次打开......

有没有办法让下拉菜单消失,再次点击主按钮? 提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以创建自己的状态布尔变量,以查看下拉列表是打开还是关闭。这样你就可以按照kvlang中的条件使下拉列表成为所需 您的代码重写示例:

scala> Json.toJson(Foo("id", FooType("a", "b"), Option("abcdef")))
res3: play.api.libs.json.JsValue = {"id":"id","fooType":{"a":"a","b":"b"},"nextId":"abcdef"}