【问题标题】:Can't get MDDropdownMenu and MDDropDownItem to work无法让 MDDropdownMenu 和 MDDropDownItem 工作
【发布时间】: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()

【问题讨论】:

标签: python python-3.x drop-down-menu kivy kivymd


【解决方案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()

【讨论】:

    猜你喜欢
    • 2010-11-27
    • 2017-04-24
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多