无法让 MDDropdownMenu 和 MDDropDownItem 工作
Posted
技术标签:
【中文标题】无法让 MDDropdownMenu 和 MDDropDownItem 工作【英文标题】:Can't get MDDropdownMenu and MDDropDownItem to work 【发布时间】:2021-06-07 22:56:52 【问题描述】:每当我按下 MDDropDownItem 时,菜单就会打开,但是当我选择一个选项时,什么也没有发生
我该如何解决这个问题?
提前致谢
这是我的代码:
from kivymd.uix.screen import MDScreen
from kivymd.uix.menu import MDDropdownMenu
from kivymd.uix.dropdownitem import MDDropDownItem
from kivymd.app import MDApp
class Contents(MDScreen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.langlist =MDDropDownItem(pos_hint='center_x': 0.5, 'center_y': 0.5)
self.langlist.text = 'English'
self.add_widget(self.langlist)
self.langlist.bind(on_release=self.menuopen)
self.langlistmenu = MDDropdownMenu(caller=self.langlist,items=['viewclass':'MDMenuItem','text':'English','viewclass':'MDMenuItem','text':'Arabic'],width_mult=3)
self.langlistmenu.bind(on_release=self.menuclose)
def menuclose(self,instance_menu,instance_menu_item):
print(instance_menu_item.text)
print(instance_menu)
self.langlist.set_item(instance_menu_item.text)
self.langlistmenu.dismiss()
def menuopen(self,instance):
self.langlistmenu.open()
class androidApp(MDApp):
def build(self):
#self.theme_cls.theme_style = "Dark"
self.theme_cls.primary_palette = 'Red'
self.theme_cls.primary_hue = 'A400'
return Contents()
AndroidApp().run()
【问题讨论】:
看看MDDropDownMenu
属性callback。
【参考方案1】:
我知道怎么做
代码如下:
from kivymd.uix.screen import MDScreen
from kivymd.uix.menu import MDDropdownMenu
from kivymd.uix.dropdownitem import MDDropDownItem
from kivymd.app import MDApp
class Contents(MDScreen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.langlist =MDDropDownItem(pos_hint='right': 0.85, 'top': 0.98)
self.langlist.set_item('English')
self.langlist.md_bg_color = [1,1,1,1]
self.add_widget(self.langlist)
self.langlist.bind(on_release=self.menuopen)
self.langlistmenu = MDDropdownMenu(position='bottom',callback=self.menuclose,caller=self.langlist,items=['viewclass':'MDMenuItem','text':'English','viewclass':'MDMenuItem','text':'Français','viewclass':'MDMenuItem','text':'Deutsche','viewclass':'MDMenuItem','text':'русский','viewclass':'MDMenuItem','text':'Español'],width_mult=4)
def menuclose(self,instance):
self.langlist.set_item(instance.text)
self.langlistmenu.dismiss()
def menuopen(self,instance):
self.langlistmenu.open()
class AndroidApp(MDApp):
def build(self):
#self.theme_cls.theme_style = "Dark"
self.theme_cls.primary_palette = 'Red'
self.theme_cls.primary_hue = 'A400'
return Contents()
AndroidApp().run()
【讨论】:
以上是关于无法让 MDDropdownMenu 和 MDDropDownItem 工作的主要内容,如果未能解决你的问题,请参考以下文章