kivy下拉项目覆盖在按钮上

时间:2017-12-07 02:49:46

标签: python kivy kivy-language

我的按钮显示在DropDown的顶部,它们是我的屏幕加载时的一部分。希望他们不要那样做。下面的图片。

kv文件:

<MainScreen>:
BoxLayout:
    id: menu_layout
    on_parent: root.class_level_list_generator()
    Button:
        id: btn_class_dropdown
        text: 'Select a class...'
        size_hint: (.25, .25)
        on_release: dd_class.open(self)
        DropDown:
            id: dd_class
    Button:
        id: btn_level_dropdown
        text: 'Select a level...'
        size_hint: (.25, .25)
        on_release: dd_level.open(self)
        DropDown:
            id: dd_level
    Button:
        id: btn_manager
        text: 'Manage'
        size_hint: (.25, .25)
        on_release: root.f_btn_manager()
    Button:
        id: btn_exit
        text: 'Exit'
        size_hint: (.25, .25)
        on_release: app.stop()

python将按钮添加到下拉列表中:

for l in levels:
# manually specify button height and label it by level number
   btn = Button(text=str(l), size_hint_y=None, height=50)
   # update button text with that of selection
   btn.bind(on_release=lambda btn:         
   self.ids.dd_level.select(btn.text))
   # add button to dropdown
   self.ids.dd_level.add_widget(btn)
self.ids.dd_level.bind(on_select=lambda instance, x: setattr(self.ids.btn_level_dropdown, 'text', x))

 希望DropDown的项目在单击按钮之前不显示。

DropDown项目未正确显示:

DropDown Items Not displayed properly

但是点击DropDown按钮后它们工作正常:

But they work fine after clicking the DropDown button

1 个答案:

答案 0 :(得分:0)

我的情况不同,因为下拉列表与我的按钮处于同一级别,在您的按钮中,下拉列表是按钮的子级。但是,您只需要添加on_parent: dd_level.dismiss()就可以按下这样的按钮:

Button:
    id: btn_level_dropdown
    text: 'Select a level...'
    size_hint: (.25, .25)
    on_release: dd_level.open(self)
    on_parent: dd_level.dismiss()

    DropDown:
        id: dd_level

如果这不能解决问题,请尝试将下拉列表放在同一级别。就我而言,这解决了它。