Kivy的上下文和应用程序菜单

kivy-garden.contextmenu的Python项目详细描述


Kivy上下文菜单

用于轻松创建contextapplication菜单的类集合。在

请看花园instructions了解如何使用kivy花园花。在

花卉信息

上下文菜单

Example of context menu

上下文菜单由ContextMenu小部件表示,它将所有菜单项包装为ContextMenuTextItem小部件。上下文菜单可以嵌套,每个ContextMenuTextItem最多可以包含一个ContextMenu小部件。在

importkivyfromkivy.appimportAppfromkivy.langimportBuilderimportkivy_garden.contextmenukv="""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""""classMyApp(App):defbuild(self):self.title='Simple context menu example'returnBuilder.load_string(kv)defsay_hello(self,text):print(text)self.root.ids['context_menu'].hide()if__name__=='__main__':MyApp().run()

自动创建表示项目具有子菜单的箭头。^{{cd2}你可以使用{cd2}来绑定。在

根上下文菜单可以使用cancel_handler_widget参数。这将添加on_touch_down事件,当您单击菜单外的任何位置时,该事件将关闭菜单。在

应用程序菜单

Example of application menu

创建应用程序菜单与上下文菜单非常相似。使用AppMenuAppMenuTextItem小部件创建顶层菜单。然后每个AppMenuTextItem可以包含一个ContextMenu小部件,正如我们上面看到的。^默认情况下,不带ContextMenu的{}被禁用

^{pr2}$

安装

pip install kivy_garden.contextmenu

使用

所有类

garden.contextmenu为您提供了一组类和mixin,用于为上下文菜单和应用程序菜单创建自己的自定义菜单项。在

上下文_菜单.抽象菜单

代表所有菜单的基本功能的Mixin类。它不能单独使用,需要用布局进行扩展。提供cancel_handler_widget属性。请参见AppMenuContextMenu。在

上下文_菜单.上下文菜单

上下文菜单的实现。在

上下文_menu.AbstractMenuItem

表示单个菜单项的Mixin类。需要扩展到任何有用的地方。它是上下文菜单和应用程序菜单的所有菜单项的基类。在

如果您想扩展这个类,您需要重写content_width属性,该属性告诉父项{}此项的预期宽度是多少。它需要知道这个来设置它自己的宽度。在

上下文_menu.ContextMenuItem

单个上下文菜单项。如果包含ContextMenu子级,则自动绘制箭头。如果要创建自定义菜单项,请扩展该类。在

上下文_menu.AbstractMenuItemHoverable

Mixin类,它使继承ContextMenuItem的任何类在鼠标悬停时更改背景色。在

上下文_menu.ContextMenuText菜单

带有Label小部件的菜单项,没有任何额外功能。在

上下文_menu.ContextMenuVider

小部件/应用程序菜单的两个部分。在

Example of ContextMenuDivider without text

它还包含一个Label的实例,如果不设置任何文本,则该实例不可见。在

ContextMenuTextItem:text:"SubMenu #33"ContextMenuDivider:text:"More options"ContextMenuTextItem:text:"SubMenu #34"

Example of ContextMenuDivider with text

上下文_menu.ContextMenuTextItem

带文本的菜单项。在大多数情况下,您可以很好地使用这个类来处理所有菜单项。您还可以看到它在all examples here中使用。包含一个Label小部件,并自动将textfont_size和{}属性复制到它。在

应用程序_菜单.AppMenu

应用程序菜单小部件。默认情况下,它填充整个父对象的宽度。在

应用程序_menu.AppMenuTextItem

应用程序菜单项宽度文本。包含一个Label小部件,并自动将textfont_size和{}属性复制到它。在

贡献

查看我们的contribution guide并随时改进花朵。在

许可证

这个软件是根据麻省理工学院的许可条款发布的。 请参阅LICENSE.txt文件。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
缺少java MIMessage附件   java试图从JSON数组向数据库插入数据   铸造java。util。ArrayList无法转换为java。util。矢量   在到达末尾后从头开始读取csv文件(Java、OpenCSV)   Java swing如何在另一个线程中打开框架   java如何为集合正确编写此比较器。排序(arrayList、comparator)?   JavaOOD将配置传递给外部类的最佳方式   java不确定如何使用switch语句从main()调用要运行的方法   java循环菜单以在选择后显示   java将位置对象转换为地址(谷歌地图)   java Hazel cast客户端端口问题   使用JarJar重新打包工具的java   使用Java Netscape目录LDAP API和二进制筛选器值   java如何从Google App Engine下载应用程序源文件   java如何居中javafx场景图“摄影机”   java调用servlet而不提交并停留在同一个JSP页面中   将文本文件加载到HashMap<Integer,List<String>>java中   JavaFX平台。重新加载站点后运行更高版本()