python - 生成多个带有臀部列表的菜单项
问题描述
我已经构建了一个带有几个菜单选项的python 臀部应用程序。但我试图弄清楚如何从列表中创建菜单或子菜单。我需要拉出一个用户列表,当它被点击时,它会执行该用户独有的命令。
所以它应该连接到外部源来获取用户列表,然后将这些用户列为菜单项。单击每个将执行不同的唯一命令或选项。
这是我试图做的,但显然它是不行的。
import rumps
# returns a list of users
listofusers = get_list_of_user_folders()
class OfficeToolApp(rumps.App):
def __init__(self):
super(OfficeToolApp, self).__init__("Tools", icon="officeimage.png")
self.menu = listofusers
for user in listofusers:
@rumps.clicked(user)
def userclick(self, _):
change_wacom_driver.RunSync("push", user)
@rumps.clicked("Push Settings to Jay")
def pushjaysettings(self, _):
change_wacom_driver.RunSync("push", "jay")
@rumps.clicked("Push Settings to Steve")
def pushstevesettings(self, _):
change_wacom_driver.RunSync("push", "steve")
if __name__ == "__main__":
OfficeToolApp().run()
我真的很惊讶这会在菜单中正确生成列表。按钮似乎没有做任何事情。
解决方案
我敢打赌有更好的方法,但这是我可以让它工作的唯一方法:
import rumps
# returns a list of users
listofusers = ["alice", "billy", "coryn", "dana", "ernie"]
def userclick(app, menuitem):
rumps.alert(f"push {menuitem.title} no preferences available!")
class OfficeToolApp(rumps.App):
for user in listofusers:
# stack the decorators
userclick = rumps.clicked(user)(userclick)
def __init__(self):
super(OfficeToolApp, self).__init__("Tools")
self.menu = listofusers
@rumps.clicked("Push Settings to Jay Bird")
def pushjaysettings(self, _):
rumps.alert("push jay no preferences available!")
@rumps.clicked("Push Settings to Steve")
def pushstevesettings(self, _):
rumps.alert("push steve no preferences available!")
if __name__ == "__main__":
OfficeToolApp().run()
推荐阅读
- javascript - 当我在同一页面中多次使用它时,滑块不起作用
- javascript - 可滚动内容的可访问性问题
- javascript - forEach() 不是函数
- javascript - 如何检查 readstream 中的块是否在 Nodejs 中是最后一个?
- amazon-web-services - AWS Cognito:用户存在于用户池中,但登录给出用户未找到异常
- html - 使用 HTML 中的自定义 CSS 覆盖 CSS 文件中的媒体查询
- java - Android 日志 应用程序可能在其主线程上做的工作过多
- jmeter - Analyse URL in JMeter test plan
- powershell - Loop Through excel file using Powershell
- excel - Excel: How does the =FILTERXML function work?