создать несколько пунктов меню со списками в крестики - PullRequest
0 голосов
/ 30 января 2019

Я создал приложение python rumps с несколькими опциями меню.Но я пытаюсь понять, как создать меню или подменю из списка.Мне нужно вывести список пользователей, и когда он щелкнет, он выполнит команду, уникальную для этого пользователя.

Поэтому он должен подключиться к внешнему источнику, чтобы получить список пользователей, а затем перечислить этих пользователей как меню.Предметы.Нажатие каждого из них выполнит другую уникальную команду или опцию.

Это было то, что я пытался сделать, но, очевидно, это запрет.

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()

Я был на самом деле удивлен, что это правильно сформировало список в меню.Кнопки просто ничего не делают.

1 Ответ

0 голосов
/ 30 января 2019

Держу пари, есть лучший способ, но это единственный способ заставить его работать:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...