OptionMenu __init __ () отсутствует 1 обязательный позиционный аргумент: 'значение' - PullRequest
0 голосов
/ 12 июня 2018

У меня проблема с попыткой разделить слова с (1) или (2) в конце, которые содержат Text поле, на 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 голосов
/ 13 июня 2018

Благодаря @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()
0 голосов
/ 12 июня 2018

третий параметр "OptionMenu" является кортежем.всегда кортеж, а не один элемент

def spl():
    ...
    return A,B
opt1=OptionMenu(root,var1, *tuple(spl()))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...