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()