如何在Kivy中显示ContextMenuTextItem而不是其他组件

时间:2016-08-16 10:15:31

标签: kivy

现在我正在为kivy创建一个应用程序GUI,我遇到了以下问题:

当我点击Title" Job"时,有一个菜单,问题是菜单与其他组件重叠(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: ''

1 个答案:

答案 0 :(得分:0)

如何使这种类型的菜单有多个解决方案,但基本上你需要的东西将显示在每个小部件的顶部(或你想要的小部件在后台)。这可以在BoxLayout中实现,但效率不高。而不是Box,将其设为FloatLayout并添加处理菜单(该面板)的窗口小部件作为最后一个窗口小部件 - 这样它就会在它之前添加的每个窗口小部件之上,并且菜单应该像所需的那样。 / p>