python中的下拉菜单

python中的下拉菜单,python,kivy,Python,Kivy,我在网上找到了这段代码,但它不起作用。链接如下: 来自kivy.lang导入生成器 从kivy.metrics导入dp 从kivy.properties导入StringProperty 从kivymd.uix.list导入OneLineIconListItem 从kivymd.app导入MDApp 从kivymd.uix.menu导入MDDropdownMenu KV=''' IconLeftWidget: 图标:root.icon MDScreen MDTextField: id:字段 位置提

我在网上找到了这段代码,但它不起作用。链接如下:

来自kivy.lang导入生成器
从kivy.metrics导入dp
从kivy.properties导入StringProperty
从kivymd.uix.list导入OneLineIconListItem
从kivymd.app导入MDApp
从kivymd.uix.menu导入MDDropdownMenu
KV='''
IconLeftWidget:
图标:root.icon
MDScreen
MDTextField:
id:字段
位置提示:{'center_x':.5'center_y':.6}
大小提示:无
宽度:“200dp”
提示文字:“密码”
on_focus:if self.focus:app.menu.open()
'''
类别IconListItem(OneLineIconListItem):
icon=StringProperty()
类测试(MDApp):
定义初始(自我,**kwargs):
超级()
self.screen=Builder.load\u串(KV)
菜单项=[
{
“viewclass”:“IconListItem”,
“图标”:“git”,
“高度”:dp(56),
“案文”:f“项目{i}”,
“发布时”:lambda x=f“Item{i}”:self.set_Item(x),
}对于范围内的i(5)]
self.menu=MDDropdownMenu(
调用者=self.screen.ids.field,
项目=菜单项,
position=“bottom”,
宽度=4,
)
def设置项目(自身、文本项目):
self.screen.ids.field.text=文本项
self.menu.disclose()
def生成(自):
返回自动屏幕
Test().run()
我需要的是从列表中选择一个元素,并将其写在标签上,这正是指南所期望的。
我正在使用python 3.8安装master branch的开发版本


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

你说的“不工作”是什么意思?请提供一份包括预期行为和实际行为的报告。请提供预期行为见。显示中间结果与预期结果的偏差。我们应该能够将单个代码块粘贴到文件中,运行它,并重现您的问题。这也让我们可以在您的上下文中测试任何建议。我们希望有一个最小的问题工作示例,包括跟踪内部操作的适当代码。不接受场外链接和文本图像;您的发布必须是独立的,符合本网站的目的。我们还希望您在错误点之前跟踪可疑值。你对他们是如何获得这些价值观感到困惑吗?我们希望您至少查找错误消息,并尝试在程序中跟踪有问题的值。最重要的是,请准确地解释当您跟踪此代码时,从您得到的输出中您不理解的内容。在你的MRE中包含这个跟踪。你发布这篇文章的方式表明,你希望我们知道你想做什么,并让这段代码——它只是从其他地方复制的,而不是你自己的作品——按照你的想法去做。如果是这样的话,你的问题就太离题了。请浏览、和,以了解此网站的工作原理,并帮助您改进当前和未来的问题,从而帮助您获得更好的答案。
from kivy.lang import Builder
from kivy.metrics import dp
from kivy.properties import StringProperty

from kivymd.uix.list import OneLineIconListItem
from kivymd.app import MDApp
from kivymd.uix.menu import MDDropdownMenu

KV = '''
<IconListItem>

    IconLeftWidget:
        icon: root.icon


MDScreen

    MDTextField:
        id: field
        pos_hint: {'center_x': .5, 'center_y': .6}
        size_hint_x: None
        width: "200dp"
        hint_text: "Password"
        on_focus: if self.focus: app.menu.open()
'''

class IconListItem(OneLineIconListItem):
    icon = StringProperty()


class Test(MDApp):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.screen = Builder.load_string(KV)
        menu_items = [
            {
                "viewclass": "IconListItem",
                "icon": "git",
                "height": dp(56),
                "text": f"Item {i}",
                "on_release": lambda x=f"Item {i}": self.set_item(x),
            } for i in range(5)]
        self.menu = MDDropdownMenu(
            caller=self.screen.ids.field,
            items=menu_items,
            position="bottom",
            width_mult=4,
        )

    def set_item(self, text__item):
        self.screen.ids.field.text = text__item
        self.menu.dismiss()

    def build(self):
        return self.screen


Test().run()