python - KivyMD - MDDropdownMenu 图标未显示(Python 3.7 上的 Kivy)
问题描述
我从KivyMD MDDropdownMenu 文档中复制了一个示例,但我没有得到与示例中相同的输出,图标没有显示。
例子:
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.menu import MDDropdownMenu, RightContent
KV = '''
<RightContentCls>
disabled: True
MDIconButton:
icon: root.icon
user_font_size: "16sp"
pos_hint: {"center_y": .5}
MDLabel:
text: root.text
font_style: "Caption"
size_hint_x: None
width: self.texture_size[0]
text_size: None, None
Screen:
MDRaisedButton:
id: button
text: "PRESS ME"
pos_hint: {"center_x": .5, "center_y": .5}
on_release: app.menu.open()
'''
class RightContentCls(RightContent):
pass
class Test(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.screen = Builder.load_string(KV)
menu_items = []
data = [
{"": "Open"},
{},
{"open-in-app": "Open in app >"},
{"trash-can-outline": "Move to Trash"},
{"rename-box": "Rename"},
{"zip-box-outline": "Create zip"},
{},
{"": "Properties"},
]
for data_item in data:
if data_item:
if list(data_item.items())[0][1].endswith(">"):
menu_items.append(
{
"right_content_cls": RightContentCls(
icon="menu-right-outline",
),
"icon": list(data_item.items())[0][0],
"text": list(data_item.items())[0][1][:-2],
"height": "36dp",
"top_pad": "10dp",
"bot_pad": "10dp",
"divider": None,
}
)
else:
menu_items.append(
{
"text": list(data_item.items())[0][1],
"icon": list(data_item.items())[0][0],
"font_style": "Caption",
"height": "36dp",
"top_pad": "10dp",
"bot_pad": "10dp",
"divider": None,
}
)
else:
menu_items.append(
{"viewclass": "MDSeparator", "height": 1}
)
self.menu = MDDropdownMenu(
caller=self.screen.ids.button,
items=menu_items,
width_mult=4,
callback=self.menu_callback,
)
def menu_callback(self, instance):
print(instance)
def build(self):
return self.screen
Test().run()
预期输出:
我的输出:
我的环境:
- 操作系统:Windows 10
- 蟒蛇:v3.7.8
- 基维:v1.11.1
- KivyMD:v0.104.1
解决方案
构建软件包时,请在要求中包含以下规范:
requirements = python3,kivy==2.0.0rc3,git+https://github.com/HeaTTheatR/KivyMD.git,sdl2_ttf==2.0.15
推荐阅读
- python - 计算 numpy 数组列的唯一值概率
- angularjs - 如何使用 Angular HttpClient 将地理位置数据作为数组写入 Google Firebase 实时数据库?
- android - Expo - 带有 Google 应用签名和 Expo 签名的 FCM
- java - 将数组作为对象问题的参数传递
- reactjs - 有没有办法从 react-phone-input-2/material-ui-phone-number 中选择的标志中获取国家信息(代码)
- c# - 在 moqu 中作为序列的一部分抛出异常
- c - OpenSSL 加密 AES 128 位 CBC
- node.js - ClientSession 无法序列化为 BSON
- spring - Spring Boot:将错误转换为错误消息详细信息的最佳方法?
- sql - 我是否不小心更新了生产数据库中的所有字段?