Как обновить список, который получает значения из OptionMenu при изменении выбора меню - Python - PullRequest
0 голосов
/ 08 апреля 2020

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

def addmove():
    global movecount, customalts, customvarlist
    if ((customvarlist[-1] == "Choose action")) == False:
        customvar = StringVar()
        movecount += 1
        #print(customvarlist[index(movecount)])
        newMenu = OptionMenu(canvasframe, customvar, *customalts, command=autocontroll)
        newMenu.grid(row=movecount,column=0)
        #customvarlist.insert(movecount, customvar)
        customvarlist.append(customvar.get())

Каждый раз, когда выбирается опция, вызывается следующая функция:

def autocontroll(action):
    global customvarlist
    print(action)
    if len(customvarlist) == 0:
        customvarlist.append(action)
    else:
        if(customvarlist[-1] == "Choose action") and ((action != "Choose action")):
            customvarlist = customvarlist[:-1]
            customvarlist.append(action)
    print(customvarlist)

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...