AttributeError: объект 'Combobox' не имеет атрибута 'append' - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь отобразить вывод (строку) в поле со списком, но продолжаю получать эту ошибку.

df3 = dataframe из двух столбцов

def callback1(eventObject):

   for col in df3.loc[df3["Customer Name"].eq(cbox.get())].iterrows():
       print(col)
       lbox.append(col)

cbox = Combobox(window,width=30, textvariable=filter_mode, state="readonly", values=list(df["Customer Name"].unique()))
cbox.place(x=150,y=60)

cbox.bind("<<ComboboxSelected>>", callback1)

lbox = Combobox(window, width=30, values=list(df3["MFG Device"].unique()))
lbox.place(x=150,y=90)

1 Ответ

0 голосов
/ 13 июля 2020

Вы не можете append() в ttk.Combobox.

Вы можете только назначить новый список со всеми значениями или получить старые значения, преобразовать в список, append() или extend() в этот список и возвращая этот список.

def callback1(event):
    data = list(lbox['values'])
    data.append("new value")
    lbox['values'] = data

или много элементов

def callback1(event):
    data = list(lbox['values'])
    data.extend( ["value1", "value2", "value3" ])
    lbox['values'] = data

Кстати: если вы сохраняете исходный список, который вы добавляете в Combobox, вы также можете использовать его для замены значений

ldata = ['A', 'B', 'C']
lbox = ttk.Combobox(window, values=ldata)

и выше

ldata.append(...)
lbox['values'] = ldata
import tkinter as tk
import tkinter.ttk as ttk

# --- functions ---

#def callback1(event):
#    ldata.append(filter_mode.get())
#    lbox['values'] = ldata
    
def callback1(event):
    data = list(lbox['values'])
    
    #data.append(filter_mode.get())
    data.extend( ["value1", "value2", "value3" ])
    
    lbox['values'] = data

# --- main ---

window = tk.Tk()

filter_mode = tk.StringVar(window)

cdata = ['A', 'B', 'C']
cbox = ttk.Combobox(window, textvariable=filter_mode, state="readonly", values=cdata)
cbox.pack()

cbox.bind("<<ComboboxSelected>>", callback1)

ldata = ['X', 'Y', 'Z']
lbox = ttk.Combobox(window, values=ldata)
lbox.pack()

window.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...