Изменение списка опций TKinter без потери предопределенной команды - PullRequest
0 голосов
/ 30 августа 2018

У меня есть OptionMenu, как указано ниже, с командой, связанной с ним, так что каждый раз, когда я выбираю одну опцию, вызывается функция «Menu_func»:

Var = StringVar(Hst)
List_Var = [ 'a','b','c']
Var.set(List_Var[0])
Menu_Var = OptionMenu(Hst, Var, *List_Var,command = lambda x: Menu_func())
Menu_Var.grid(row=3,column=7,columnspan=2)

Функция, которая изменяет список опций в OptionMenu:

def Change_list():
    Var2 = Var2.get()
    Var.set('')
    Menu_Var['menu'].delete(0, 'end')

List_1 = [ 'a','b','c']
List_2 = [ 'x','y','z']

if Var2 == 0:
    List = List_1
    for choice in List:
        Menu_Var['menu'].add_command(label=choice, command=tk._setit(Var, choice))
    Var.set(List[0])
if Var2 == 1:
    List = List_2
    for choice in List:
        Menu_Var['menu'].add_command(label=choice, command=tk._setit(Var, choice))
    Var.set(List[0])

Проблема в том, что когда я вызываю «Change_list», мой виджет OptionMenu теряет свою функцию «Menu_func». Есть ли способ повторно добавить эту команду при изменении списка параметров?

...