搜索框在kivy提出建议?

时间:2015-10-12 04:43:49

标签: python kivy

我是kivy的新手想知道我们如何将textinput框绑定到建议,以便用户触摸并选择建议。 我有很长的按钮列表,我想根据名称选择。

1 个答案:

答案 0 :(得分:0)

我正在使用kivymd,但我真的不知道该如何在kivy中进行操作,但这是kivymd的代码

from kivy.lang import Builder
from kivy.properties import StringProperty
from kivy.uix.screenmanager import Screen

from kivymd.icon_definitions import md_icons
from kivymd.app import MDApp
from kivymd.uix.list import OneLineIconListItem


Builder.load_string(
'''
#:import images_path kivymd.images_path


<CustomOneLineIconListItem>:

  IconLeftWidget:
     icon: root.icon


<PreviousMDIcons>:

  BoxLayout:
    orientation: 'vertical'
    spacing: dp(10)
    padding: dp(20)

    BoxLayout:
        size_hint_y: None
        height: self.minimum_height

        MDIconButton:
            icon: 'magnify'

        MDTextField:
            id: search_field
            hint_text: 'Search icon'
            on_text: root.set_list_md_icons(self.text, True)

    RecycleView:
        id: rv
        key_viewclass: 'viewclass'
        key_size: 'height'

        RecycleBoxLayout:
            padding: dp(10)
            default_size: None, dp(48)
            default_size_hint: 1, None
            size_hint_y: None
            height: self.minimum_height
            orientation: 'vertical'
 '''
 )


class CustomOneLineIconListItem(OneLineIconListItem):
     icon = StringProperty()


class PreviousMDIcons(Screen):

    def set_list_md_icons(self, text="", search=False):
      '''Builds a list of icons for the screen MDIcons.'''

     def add_icon_item(name_icon):
        self.ids.rv.data.append(
            {
                "viewclass": "CustomOneLineIconListItem",
                "icon": name_icon,
                "text": name_icon,
                "callback": lambda x: x,
            }
        )

    self.ids.rv.data = []
    for name_icon in md_icons.keys():
        if search:
            if text in name_icon:
                add_icon_item(name_icon)
        else:
            add_icon_item(name_icon)


class MainApp(MDApp):
  def __init__(self, **kwargs):
     super().__init__(**kwargs)
     self.screen = PreviousMDIcons()

  def build(self):
      return self.screen

  def on_start(self):
      self.screen.set_list_md_icons()


MainApp().run()

一些结果 here is the screen shot result when your not searching for anything

here is a screen shot when i am trying to search

second

here is a result when the word am searching does not exist