OptionMenu __init __()缺少1个必需的位置参数:'value'

时间:2018-06-12 12:49:54

标签: python tkinter

我有一个问题是尝试将包含在Text框中的(1)或(2)的单词划分为2 OptionMenu。错误是__init__() missing 1 required positional argument: 'value',它发生在第26行(和第27行):opt1=OptionMenu(root,var1,*spl()[0])。如果你看看会很感激!

root=Tk()
text=Text(root,height=10,width=40)
text.pack()

def spl():
    Get=text.get(1.0,END)
    Get=Get.split()    
    A=[]
    B=[]
    for i in range(len(Get)):
        if Get[i][:-4:-1] == '(1)':
            A.append(Get[i])
        elif Get[i][:-4:-1] == '(2)':
            B.append(Get[i])
        else:
            continue
    return A,B

btn=Button(root,command=spl,text='Refresh')
btn.pack()
var1=IntVar()
var1.set('1st list')
var2=IntVar()
var2.set('2nd list')
opt1=OptionMenu(root,var1,*spl()[0])
opt2=OptionMenu(root,var2,*spl()[1])
opt1.pack()
opt2.pack()
root.mainloop()

2 个答案:

答案 0 :(得分:0)

感谢@fhdrsdg我修复了这段代码。也许我修复它的方式并不专业,但至少它有效。 (我没有为空数组A和B写一个例外,但我认为这不应该是困难的。)

root=Tk()
text=Text(root,height=10,width=40)
text.pack()

def spl():
    Get=text.get(1.0,END)
    Get=Get.split(',') 
    A=[]
    B=[]
    for i in range(len(Get)):
        if Get[i][-3:] == '(1)':
            A.append(Get[i])
        elif Get[i][-3:] == '(2)':
            B.append(Get[i])
        else:
            continue
    global opt1,opt2
    opt1.destroy()
    opt2.destroy()
    opt1=OptionMenu(root,var1,*A)
    opt1.pack()
    opt2=OptionMenu(root,var2,*B)    
    opt2.pack()


var1=IntVar()
var1.set('1st list')
var2=IntVar()
var2.set('2nd list')
opt1=OptionMenu(root,var1,value='0')
opt2=OptionMenu(root,var2,value='0')
btn=Button(root,command=spl,text='Refresh')
btn.pack()

opt1.pack()
opt2.pack()
root.mainloop()

答案 1 :(得分:-1)

“OptionMenu”的第三个参数是元组。总是元组,而不是一个元素

def spl():
    ...
    return A,B
opt1=OptionMenu(root,var1, *tuple(spl()))