2016-08-16 2 views
0

теперь я создать графический интерфейс для приложения, kivy, и у меня есть проблема, как следующее:Как отобразить ContextMenuTextItem по сравнению с другими компонентами в Kivy

Когда я нажимаю на Название «Работа», есть меню, проблема в том, что меню перекрывается другими компонентами (textinput ...). Как я могу отобразить это меню над textinput? Пожалуйста, смотрите изображение для получения более подробной информации.

Problem

#: import main todo 
    #: import ListAdapter kivy.adapters.listadapter.ListAdapter 
    #: import ListItemButton kivy.uix.listview.ListItemButton 
    Root: 
     task_input: task_input_view 
     task_list: tasks_list_view 
     text_input: text_input 
     BoxLayout: 
      orientation: 'vertical' 
      id: layout 

      AppMenu: 
       id: app_menu 
       top: root.height 
       cancel_handler_widget: layout 
       AppMenuTextItem: 
        text: "Job" 
        ContextMenu: 
         ContextMenuTextItem: 
           text: "Open" 
           on_release: root.show_load() 
         ContextMenuTextItem: 
           text: "Save" 
           on_release: root.show_save() 
         ContextMenuTextItem: 
           text: "SaveAs" 
         ContextMenuDivider: 
         ContextMenuTextItem: 
           text: "Exec" 

      BoxLayout: 
       size_hint_y: None 
       height: "40dp" 

       TextInput: 
        id: task_input_view 
        size_hint_x: 70 
       Button: 
        text: "Add" 
        size_hint_x: 15 
        on_press: root.add_task() 
       Button: 
        text: "Del" 
        size_hint_x: 15 
        on_press: root.del_task() 

      ListView: 
       id: tasks_list_view 
       adapter: 
        ListAdapter(data=[], cls=main.TaskButton) 

     TextInput: 
       id: text_input 
       text: '' 

ответ

0

Как сделать этот тип меню имеет более одного решения, но в основном вам нужно что-то, что будет отображаться в верхней части каждого виджета (или виджетов, которые вы хотите в фоновом режиме). Это может быть достигнуто в BoxLayout, но это не эффективно. Вместо Box, сделайте это FloatLayout и добавьте виджет, который обрабатывает ваше меню (эта панель) в качестве последнего виджета - таким образом он будет поверх каждого добавленного виджета, и меню должно вести себя как желательно.