Tkinter get OptionMenu Список опций - PullRequest
       6

Tkinter get OptionMenu Список опций

0 голосов
/ 11 февраля 2019

Я использую Python 3, модуль Tkinter.Я посмотрел на библиотеку ttk и один из виджетов есть меню параметров.Это здорово, но мне было интересно, есть ли способ получить список опций, которые в данный момент используются меню.

В этом примере:

Options_List=["option1","option2"]
My_Menu = OptionMenu(master, variable, *Options_List))

Я в курсечто это может показаться тривиальным.Просто получите переменную Options_List.Но теперь давайте предположим, что я делаю множество опций (используя один или несколько списков):

Options_List=["option1","option2","option3"]
Menu_List = []
for Option in range(3):
    My_Menu = OptionMenu(master, variable, *Options_List))
    Menu_List.append(My_Menu)
    Options_List.del(-1) #removes last item

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

Выходные данные опции будут давать:

Menu_List[0] -> ["option1","option2","option3"]
Menu_List[1] -> ["option1","option2"]
Menu_List[2] -> ["option1"]

Теперь вы видите, что я не могу просто получить Options_List, потому что у каждого меню параметров есть свой собственный список для работы.

Итак, есть идеи?Можно ли каким-то образом получить список опций, которые использует мое n-е меню опций?

1 Ответ

0 голосов
/ 11 февраля 2019

Меню опций - не более чем стандартная кнопка с прикрепленным к ней меню.Итак, чтобы получить значения в меню параметров, вам просто нужно получить меню, связанное с этим меню, и использовать методы, доступные в меню, для получения пунктов меню.

Например, давайте предположим, чтоom представляет опциональное меню.Чтобы получить меню, вы можете сделать это:

menu = om['menu']

menu теперь является ссылкой на объект Menu.Вы можете узнать индекс последнего элемента с помощью метода index:

    last_index = menu.index("end")

С его помощью вы можете перебирать пункты в меню.Если вам нужна метка, вы можете использовать entrycget, чтобы получить значение этого атрибута:

    values = []
    for i in range(last_index+1):
        values.append(menu.entrycget(i, "label"))

При этом values будет содержать значения, которые появляются в меню.

...