将选项菜单添加到 tkinter 中的列表后,不能 select 选项
cannot select option from optionmenu after adding it to list in tkinter
我制作了一个带有下拉选项的小 tkinter window,我希望向其添加新选项,下面的代码将选项添加到列表中,但我无法 select 单击在他们。选项菜单附带的命令不会在单击时打印新添加的选项,预定义的选项工作得很好。我还没有找到代码中的错误。
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()
只需在 add_op
函数中重新创建 option
小部件即可。
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()
我制作了一个带有下拉选项的小 tkinter window,我希望向其添加新选项,下面的代码将选项添加到列表中,但我无法 select 单击在他们。选项菜单附带的命令不会在单击时打印新添加的选项,预定义的选项工作得很好。我还没有找到代码中的错误。
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()
只需在 add_op
函数中重新创建 option
小部件即可。
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()