为了账号安全,请及时绑定邮箱和手机立即绑定

MDDropDownMenu KivyMD 的绑定按钮

MDDropDownMenu KivyMD 的绑定按钮

慕少森 2023-09-02 16:39:08
我在 KivyMD 的屏幕上有一个 MDTextField。所需的过程是在 TextField 的 on_focus 事件上打开 MDDropDownMenu。此外,一旦您选择了 DropDownMenu 的某个元素,此类菜单将被关闭,并且所选文本将被添加到 MDTextField 中。我成功地编码了该过程的第一部分。尽管如此,我似乎无法正确地绑定按钮。我没有收到错误消息,但似乎从未调用绑定函数。这是我的 Kivy 代码:<TravelManagerWindow>:    MDTextField:        id: dest_dropdown_item        pos_hint: {"x":0, 'center_y': 0.5}        write_tab: False        size_hint: 1, None        icon_right: 'arrow-down-drop-circle-outline'        text:'Seleccionar'        on_focus: if self.focus: root.display_dropdown()这是我的Python代码:class TravelManagerWindow(Screen):    def display_dropdown(self):        # Create the drop down menu        menu_items = [{"text": f"Item {i}"} for i in range(5)]        self.menu = MDDropdownMenu(            caller=self.ids.dest_dropdown_item,            items=menu_items,            width_mult=4,        )        self.menu.open()        self.menu.bind(on_release=self.set_item)    def set_item(self, instance_menu, instance_menu_item):        def set_item(interval):            self.ids.dest_dropdown_item.text = instance_menu_item.text            instance_menu.dismiss()        Clock.schedule_once(set_item, 0.5)我相信 set_item 函数甚至没有被调用,但是,menu.open() 确实正确触发。有什么建议么?预先非常感谢。
查看完整描述

3 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

同样的问题,

我有 kivymd 0.104.1

我通过安装 0.104.2dev 解决了

pip 安装https://github.com/kivymd/KivyMD/archive/master.zip


查看完整回答
反对 回复 2023-09-02
?
呼唤远方

TA贡献1856条经验 获得超11个赞

从 master 分支安装 kivymd。

pip install https://github.com/kivymd/KivyMD/archive/master.zip


查看完整回答
反对 回复 2023-09-02
?
守着一只汪

TA贡献1872条经验 获得超3个赞

当我写这篇文章时,从 k master 分支安装 kivy 不仅没有解决问题,反而让问题变得更糟。


编辑:找到非主分支安装的修复


self.menu_items=[{"text": f"{item}"} for item in self.itens]


self.menu = MDDropdownMenu(

                                caller=self.nome,

                                items=self.menu_items,

                                position="bottom",

                                width_mult=4,

                                #Here you'll put that bind func

                                callback = self.function 

                                )     


def function(self,instance):

    #Prints the text of the menu item instance

    print(instance.text)


查看完整回答
反对 回复 2023-09-02
  • 3 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信