我遇到一个问题,要通过从数据库中提取数据来动态填充上下文菜单。但是,上下文菜单从屏幕上方溢出。
是否可以使其滚动或使上下文菜单向下而不是向上填充?
这是我的文件:
from kivy.lang import Builder
from UltimateDropDown import UltimateDropDownApp
from Database import Database
if __name__ == '__main__':
db = Database()
db.populateChangeTypes()
kv = """
#: import HoverLabel HoverBehavior
#: import ContextMenu kivy.garden.contextmenu
UltimateDropDown:
<UltimateDropDown>:
id: layout
ModifiedHoverLabel:
id: hover_label
pos: 10, self.parent.height - self.height - 10
text: "Left click anywhere outside the context menu to close it"
size_hint: None, None
size: self.texture_size
on_enter: context_menu.show(*app.root_window.mouse_pos)
Button:
size_hint: None, None
pos_hint: {"center_x": 0.5, "center_y": 0.8 }
size: 300, 40
text: "Click me to show the context menu"
on_release: context_menu.show(*app.root_window.mouse_pos)
ContextMenu:
id: context_menu
visible: False
cancel_handler_widget: layout
"""
str_list = []
for item in db.changeTypeToId:
str_list.append("""
ContextMenuTextItem:
text: """ + '"{0}"'.format(item) + """""")
kv += ''.join(str_list)
Builder.load_string(kv)
udda = UltimateDropDownApp()
udda.run()
这里唯一相关的代码是Kivy Garden上下文菜单(来自GitHub)。
附加说明:如果菜单项少于20个,则上下文菜单看起来不错。当我溢出时开始向上填充。