我稍微修改了此处找到的代码(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)
代码工作正常,因为原始代码可以:当我按下主按钮时,下拉菜单会打开,当我在菜单中选择一个项目或单击菜单外的某个位置时它会消失。还行吧。
我的问题是: 当我再次按下主按钮时,下拉菜单不会消失(解除)。当我这样做时,菜单再次打开......
有没有办法让下拉菜单消失,再次点击主按钮? 提前致谢。
答案 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"}