无法让 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 工作的主要内容,如果未能解决你的问题,请参考以下文章

如何将 MDDropdownMenu 放在 KivyMD 中的 MDlist 项目上?

MDDropDownMenu KivyMD的绑定按钮

Padavan 路由器系统如何放开wan口的samba访问

无盘 怎么优化Marvall千兆网卡的启动速度,。

NanoPi NEO Air使用一:介绍

无法让 webViewDidStartLoad 和 webViewDidFinishLoad 正常工作