【问题标题】:cannot select option from optionmenu after adding it to list in tkinter将选项添加到 tkinter 列表后无法从选项菜单中选择选项
【发布时间】:2020-06-07 20:49:08
【问题描述】:

我制作了一个带有下拉选项的小 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()

【问题讨论】:

    标签: python tkinter tkinter.optionmenu


    【解决方案1】:

    只需在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()
    

    【讨论】:

    • 谢谢,这就像一个魅力,虽然我想知道使用 option['menu'].add_command(label=choice, command=var.set(choice)) 时的错误是什么。你有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 2020-09-18
    相关资源
    最近更新 更多