【问题标题】:Creating Sub Menu for Menu item using Rumps python on Mac OS在 Mac OS 上使用 Rumps python 为菜单项创建子菜单
【发布时间】:2015-09-13 20:38:22
【问题描述】:

我从这个问题Using Rumps in Python and OS X Without Creating a Class得到这个示例代码

@rumps.clicked("About")
def about(sender):
    rumps.alert("This is a cool app!")

@rumps.clicked("Preferences")
def about(sender):
    rumps.alert("This is a cool app's settings!")

app = rumps.App("My Toolbar App", title='World, Hello')
app.menu = [
    rumps.MenuItem('About', icon='pony.jpg', dimensions=(18, 18)), 
    'Preferences',
]
app.run()

如何为 About menuitem 创建一个包含“关于我”、“关于项目”等值的子菜单?

【问题讨论】:

    标签: python macos appkit


    【解决方案1】:

    向rumps 添加子菜单非常简单——只需将父菜单和子项括在方括号[] 中:

    app.menu = [
        [rumps.MenuItem("About", icon='pony.jpg', dimensions=(18, 18)), 
        [rumps.MenuItem("About Me"), rumps.MenuItem("About Project"), 
        rumps.MenuItem("etc...")]], 
        None, 
        rumps.MenuItem('Preferences')
    ]
    

    例如,如果您想为 etc... 添加另一个子菜单,您可以:

    app.menu = [
        [rumps.MenuItem("About", 'icon='pony.jpg', dimensions=(18, 18)), 
        [rumps.MenuItem("About Me"), rumps.MenuItem("About Project"), 
        [rumps.MenuItem("etc..."), 
        [rumps.MenuItem("more!")]]]], 
        None, 
        rumps.MenuItem('Preferences')
    ]
    

    子菜单项也可以使用类似JSON 的语法,如果您的子菜单中有很多子菜单,这可能更容易管理:

    app.menu = [
        rumps.MenuItem('About', icon='pony.png', dimensions=(18, 18)), 
        'Preferences',
        None,  # separator
        {'SubMenu':
            {"Child Menu One": ["Item 1", "Item 2"],
             "Child Menu Two": ["Item 1", rumps.MenuItem("Item 2")]}},
        None
    ]
    

    *None 充当分隔符,完全是可选的。

    你可以找到一些more examples here。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-23
      • 1970-01-01
      • 2012-01-31
      • 1970-01-01
      • 2012-03-11
      • 2017-05-13
      • 1970-01-01
      • 2016-08-19
      相关资源
      最近更新 更多