""" Components/DropdownItem ======================= .. image:: https://github.com/HeaTTheatR/KivyMD-data/raw/master/gallery/kivymddoc/dropdown-item.png :align: center Usage ----- .. code-block:: python from kivy.lang import Builder from kivymd.app import MDApp KV = ''' MDScreen MDDropDownItem: id: drop_item pos_hint: {'center_x': .5, 'center_y': .5} text: 'Item' on_release: print("Press item") ''' class Test(MDApp): def __init__(self, **kwargs): super().__init__(**kwargs) self.screen = Builder.load_string(KV) def build(self): return self.screen Test().run() .. seealso:: `Work with the class MDDropdownMenu see here `_ """ __all__ = ("MDDropDownItem",) import os from kivy.lang import Builder from kivy.properties import NumericProperty, StringProperty from kivy.uix.behaviors import ButtonBehavior from kivy.uix.boxlayout import BoxLayout from kivy.uix.widget import Widget from kivymd import uix_path from kivymd.theming import ThemableBehavior from kivymd.uix.behaviors import DeclarativeBehavior with open( os.path.join(uix_path, "dropdownitem", "dropdownitem.kv"), encoding="utf-8" ) as kv_file: Builder.load_string(kv_file.read()) class _Triangle(Widget): pass class MDDropDownItem( DeclarativeBehavior, ThemableBehavior, ButtonBehavior, BoxLayout ): text = StringProperty() """ Text item. :attr:`text` is a :class:`~kivy.properties.StringProperty` and defaults to `''`. """ current_item = StringProperty() """ Current name item. :attr:`current_item` is a :class:`~kivy.properties.StringProperty` and defaults to `''`. """ font_size = NumericProperty("16sp") """ Item font size. :attr:`font_size` is a :class:`~kivy.properties.NumericProperty` and defaults to `'16sp'`. """ def on_text(self, instance_drop_down_item, text_item: str) -> None: self.ids.label_item.text = text_item def set_item(self, name_item: str) -> None: """Sets new text for an item.""" self.ids.label_item.text = name_item self.current_item = name_item