невозможно выбрать опцию из optionmenu после добавления ее в список в tkinter

Я сделал небольшое окно tkinter с раскрывающимися параметрами, и я хочу добавить в него новые параметры, приведенный ниже код добавляет параметры в список, но я не могу выбрать их, когда нажимаю на них. Команда, прикрепленная к меню параметров, не печатает новые добавленные параметры при нажатии, предопределенные работают нормально. Я пока не могу найти ошибку в коде.

enter code here
# CHECK OPTIONS MENU
from tkinter import *

def add_op(e,op):

    choice=e.get()
    var=StringVar(root)
    options.append(e.get())
    option['menu'].add_command(label=choice, command=var.set(choice)) #add new option here

    op.grab_release()
    op.destroy()

def add_option():
    op=Toplevel(root)
    Label(op,text='Enter new option :').grid(row=1,column=1)

    e=Entry(op)
    e.grid(row=1,column=2)
    Button(op,text='SUBMIT',command=lambda: add_op(e,op)).grid(row=2,column=2)

def comm(var):
    print(var)
   if(var=='add_new'):
       add_option()

root=Tk()

root.title('checking options')

Label(root,text='something ').grid(row=1,column=1)

options=['add_new','one','two','three','four']

var=StringVar(root)
var.set(options[2])
option=OptionMenu(root,var,*options,command=comm)
option.grid(row=1,column=2,pady=5,sticky='ew')

root.mainloop()

person Sugato    schedule 07.06.2020    source источник


Ответы (1)


Просто заново создайте виджет option в функции add_op.

def add_op(e,op):

    choice=e.get()
    var=StringVar(root)
    options.append(e.get())

    ########## Changes ##############
    var.set(options[2])
    option=OptionMenu(root,var,*options,command=comm)
    option.grid(row=1,column=2,pady=5,sticky='ew')
    #################################

    op.grab_release()
    op.destroy()
person Som Shekhar Mukherjee    schedule 07.06.2020
comment
спасибо, это сработало как шарм, хотя я хотел знать, в чем была ошибка при использовании option['menu'].add_command(label=choice, command=var.set(choice)) . у тебя есть идея? - person Sugato; 08.06.2020