Kivy的上下文和应用程序菜单
项目描述
Kivy上下文菜单
用于轻松创建上下文和应用程序菜单的类集合。
有关如何使用kyv garden flowers的说明,请参阅花园 说明。
花信息
上下文菜单
上下文菜单由包装所有菜单项的ContextMenu
小部件表示。上下文菜单可以嵌套,每个ContextMenuTextItem
最多可以包含一个ContextMenu
小部件。
import kivy
from kivy.app import App
from kivy.lang import Builder
import kivy_garden.contextmenu
kv = """
FloatLayout:
id: layout
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
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
ContextMenuTextItem:
text: "SubMenu #2"
ContextMenuTextItem:
text: "SubMenu #3"
ContextMenu:
ContextMenuTextItem:
text: "SubMenu #5"
ContextMenuTextItem:
text: "SubMenu #6"
ContextMenu:
ContextMenuTextItem:
text: "SubMenu #9"
ContextMenuTextItem:
text: "SubMenu #10"
ContextMenuTextItem:
text: "SubMenu #11"
ContextMenuTextItem:
text: "Hello, World!"
on_release: app.say_hello(self.text)
ContextMenuTextItem:
text: "SubMenu #12"
ContextMenuTextItem:
text: "SubMenu #7"
ContextMenuTextItem:
text: "SubMenu #4"
"""
class MyApp(App):
def build(self):
self.title = 'Simple context menu example'
return Builder.load_string(kv)
def say_hello(self, text):
print(text)
self.root.ids['context_menu'].hide()
if __name__ == '__main__':
MyApp().run()
表示项目具有子菜单的箭头将自动创建。《ContextMenuTextItem》继承自ButtonBehavior,因此您可以使用on_release
将其绑定到操作。
根上下文菜单可以使用cancel_handler_widget
参数。这向其中添加了on_touch_down
事件,当您在菜单外部点击时,它会关闭菜单。
应用程序菜单
创建应用程序菜单与上下文菜单非常相似。使用 AppMenu
和 AppMenuTextItem
小部件来创建顶级菜单。然后每个 AppMenuTextItem
都可以包含一个 ContextMenu
小部件,就像我们上面看到的。默认情况下,没有 ContextMenu
的 AppMenuTextItem
被禁用。
import kivy
from kivy.app import App
from kivy.lang import Builder
import kivy_garden.contextmenu
kv = """
FloatLayout:
id: layout
AppMenu:
id: app_menu
top: root.height
cancel_handler_widget: layout
AppMenuTextItem:
text: "Menu #1"
ContextMenu:
ContextMenuTextItem:
text: "Item #11"
ContextMenuTextItem:
text: "Item #12"
AppMenuTextItem:
text: "Menu Menu Menu #2"
ContextMenu:
ContextMenuTextItem:
text: "Item #21"
ContextMenuTextItem:
text: "Item #22"
ContextMenuTextItem:
text: "ItemItemItem #23"
ContextMenuTextItem:
text: "Item #24"
ContextMenu:
ContextMenuTextItem:
text: "Item #241"
ContextMenuTextItem:
text: "Hello, World!"
on_release: app.say_hello(self.text)
# ...
ContextMenuTextItem:
text: "Item #5"
AppMenuTextItem:
text: "Menu Menu #3"
ContextMenu:
ContextMenuTextItem:
text: "SubMenu #31"
ContextMenuDivider:
ContextMenuTextItem:
text: "SubMenu #32"
# ...
AppMenuTextItem:
text: "Menu #4"
# ...
# The rest follows as usually
"""
class MyApp(App):
def build(self):
self.title = 'Simple app menu example'
return Builder.load_string(kv)
def say_hello(self, text):
print(text)
self.root.ids['app_menu'].close_all()
if __name__ == '__main__':
MyApp().run()
安装
pip install kivy_garden.contextmenu
用法
所有类
garden.contextmenu
为您提供了一组类和混合类,用于创建自己的自定义上下文和应用菜单项。
context_menu.AbstractMenu
表示所有菜单基本功能的混合类。它不能单独使用,需要通过布局进行扩展。提供 cancel_handler_widget
属性。参见 AppMenu 或 ContextMenu。
context_menu.ContextMenu
上下文菜单的实现。
context_menu.AbstractMenuItem
表示单个菜单项的混合类。需要扩展才能具有任何实用性。它是上下文和应用菜单所有菜单项的基类。
如果您想扩展此类,您需要重写 content_width
属性,它告诉父 ContextMenu
此项预期的宽度。它需要知道这一点来设置它自己的宽度。
context_menu.ContextMenuItem
单个上下文菜单项。如果包含 ContextMenu
子项,则自动绘制箭头。如果您想创建自定义菜单项,请扩展此类。
context_menu.AbstractMenuItemHoverable
混合类,它使继承自 ContextMenuItem
的任何类在鼠标悬停时改变背景颜色。
context_menu.ContextMenuText
带有 Label
小部件的菜单项,没有任何额外功能。
context_menu.ContextMenuDivider
菜单小部件,用于分割上下文/应用菜单的两个部分。
它还包含一个 Label
实例,如果您没有设置任何文本,则不可见。
ContextMenuTextItem:
text: "SubMenu #33"
ContextMenuDivider:
text: "More options"
ContextMenuTextItem:
text: "SubMenu #34"
context_menu.ContextMenuTextItem
带有文本的菜单项。您在大多数情况下都可以使用此类来创建所有菜单项。您还可以在 所有示例中 看到它的使用。包含一个 Label
小部件,并自动将 text
、font_size
和 color
属性复制到它。
app_menu.AppMenu
应用程序菜单小部件。默认情况下,它填充父容器的整个宽度。
app_menu.AppMenuTextItem
应用程序菜单项宽文本。包含一个 Label
小部件,并自动将 text
、font_size
和 color
属性复制到它。
贡献
查看我们的 贡献指南,并随意改进这个项目。
许可
本软件根据 MIT 许可证发布。请参阅 LICENSE.txt 文件。
项目详情
kivy_garden.contextmenu-0.1.0.dev1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b28ff4d9dd62c7b9cd6a3cb26262f53062c90a274cd0f3a339493ce0691a19a3 |
|
MD5 | d410670c591240d8f5ddd49f8656811f |
|
BLAKE2b-256 | 947e52925b29be0c7fb0b28f741fd84169be502afd81c0c44e2986e81161f19f |
kivy_garden.contextmenu-0.1.0.dev1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c522dd310cb3e92f0c875103072abe4e151605cd2a1d3fd401772a339dccc392 |
|
MD5 | 83c3d146364925e1dfd46d2b22b55cf5 |
|
BLAKE2b-256 | 83fc9f3969409419b325992fe9d85aa5db9ff3e80094d2a1f2fb548f068fa919 |