我正在尝试删除在不同组合框上已经选择的值。我的第一次尝试是读取组合框的选定值,然后从列表中将其删除,但这对我不起作用,然后我尝试组装一个函数,该函数将读取哪个组合框更改了其值并将其放在列表中,因此可以将其从主列表中删除,但所有尝试均无效。
窗口代码:
class Selector_Canal(tk.Frame):
def __init__(self, parent, controller):
#VENTANA
tk.Frame.__init__(self, parent)
#LABEL
label = ttk.Label(self, text="Seleccion de canales", font=Letra_Grande)
label.pack(pady=10,padx=10)
#LABEL
label = ttk.Label(self, text="Argon")
label.pack()
#LISTA
#COMBOBOX
lista = ["" ,"A", "B", "C", "D"]
lista_id = []
combo_var1 = tk.StringVar()
combo1 = ttk.Combobox(self, values = lista, textvariable=combo_var1, state = 'readonly')
combo1.current(0)
combo1.pack(pady=10, padx=10)
#LABEL
label = ttk.Label(self, text="Nitrogeno")
label.pack()
#COMBOBOX
combo_var2 = tk.StringVar()
combo2 = ttk.Combobox(self, values = lista, textvariable=combo_var2, state = 'readonly')
combo2.current(0)
combo2.pack(pady=10, padx=10)
#LABEL
label = ttk.Label(self, text="Oxigeno")
label.pack()
#COMBOBOX
combo_var3 = tk.StringVar()
combo3 = ttk.Combobox(self, values = lista, textvariable=combo_var3, state = 'readonly')
combo3.current(0)
combo3.pack(pady=10, padx=10)
#LABEL
label = ttk.Label(self, text="Hidrogeno")
label.pack()
#COMBOBOX
combo_var4 = tk.StringVar()
combo4 = ttk.Combobox(self, values =lista, textvariable=combo_var4, state = 'readonly')
combo4.current(0)
combo4.pack(pady=10, padx=10)
combo1.bind("<<ComboboxSelected>>", lambda x: [id_a(lista_id ,lista, combo_var1, combo_var2, combo_var3, combo_var4, combo1,
combo2, combo3, combo4)])
combo2.bind("<<ComboboxSelected>>", lambda x: [id_b(lista_id ,lista, combo_var1, combo_var2, combo_var3, combo_var4, combo1,
combo2, combo3, combo4)])
combo3.bind("<<ComboboxSelected>>", lambda x: [id_c(lista_id ,lista, combo_var1, combo_var2, combo_var3, combo_var4, combo1,
combo2, combo3, combo4)])
combo4.bind("<<ComboboxSelected>>", lambda x: [id_d(lista_id ,lista, combo_var1, combo_var2, combo_var3, combo_var4, combo1,
combo2, combo3, combo4)])
#BOTON
button1 = ttk.Button(self, text="Aceptar",
command=lambda: [normalizacion_canal(combo_var1, combo_var2, combo_var3, combo_var4)])
button1.pack()
#BOTON
button2 = ttk.Button(self, text="Home",
command=lambda: [controller.show_frame(Pagina_Inicio)])
button2.pack()
CODE OF FUNCTION:
def id_a(lista_id, lista ,combo_var1, combo_var2, combo_var3, combo_var4, combo1, combo2, combo3, combo4):
id = 1
edit_combobox1(lista_id, id, lista, combo_var1, combo_var2, combo_var3, combo_var4, combo1, combo2, combo3, combo4)
def id_b(lista_id, lista ,combo_var1, combo_var2, combo_var3, combo_var4, combo1, combo2, combo3, combo4):
id = 2
edit_combobox1(lista_id, id, lista, combo_var1, combo_var2, combo_var3, combo_var4, combo1, combo2, combo3, combo4)
def id_c(lista_id, lista ,combo_var1, combo_var2, combo_var3, combo_var4, combo1, combo2, combo3, combo4):
id = 3
edit_combobox1(lista_id, id, lista, combo_var1, combo_var2, combo_var3, combo_var4, combo1, combo2, combo3, combo4)
def id_d(lista_id, lista ,combo_var1, combo_var2, combo_var3, combo_var4, combo1, combo2, combo3, combo4):
id = 4
edit_combobox1(lista_id, id, lista, combo_var1, combo_var2, combo_var3, combo_var4, combo1, combo2, combo3, combo4)
def edit_combobox1(lista_id, id, lista, combo_var1, combo_var2, combo_var3, combo_var4, combo1, combo2, combo3, combo4):
print("\n+++++++++++++++++++++++++++++++++++++\n")
lista_cache = []
lista_id.append(id)
print("Valores de ID en lista: ", lista_id)
print("ID seleccionado: ", id)
print("lista: ", lista)
print("\n")
if id == 1:
lista_cache.append(combo_var1.get())
list((set(lista_cache)))
print("Valor seleccionado en lista: ", lista_cache)
print("Valor lista: ", lista)
lista_editada = list(filter(lambda x: x not in lista_cache, lista))
print("Lista a imprimir: ", lista_editada)
print("ID en if: ", lista_id[0])
print(len(list(set(lista_id))))
if 'B' in lista_editada and lista_id[0] == 2:
lista_editada.remove('A')
print(lista_editada)
if 'D' in lista_editada and lista_id[0] == 3:
lista_editada.remove('D')
print(lista_editada)
if 'C' in lista_editada and lista_id[0] == 4:
lista_editada.remove('C')
print(lista_editada)
#id_pasado = id
print("Reimpresion de lista: ",lista_editada)
combo2.config(values = lista_editada)
combo3.config(values = lista_editada)
combo4.config(values = lista_editada)
if id == 2:
lista_cache.append(combo_var2.get())
list((set(lista_cache)))
print("Valor seleccionado en lista: ", lista_cache)
lista_editada = list(filter(lambda x: x not in lista_cache, lista))
print("Lista a imprimir: ", lista)
print("ID en if: ", lista_id[0])
print(len(list(set(lista_id))))
if 'A' in lista_editada and lista_id[0] == 1:
lista_editada.remove('A')
print(lista_editada)
if 'D' in lista_editada and lista_id[0] == 3:
lista_editada.remove('D')
print(lista_editada)
if 'C' in lista_editada and lista_id[0] == 4:
lista_editada.remove('C')
print(lista_editada)
#id_pasado = id
print("Reimpresion de lista: ",lista_editada)
combo1.config(values = lista_editada)
combo3.config(values = lista_editada)
combo4.config(values = lista_editada)
if id == 3:
lista_cache.append(combo_var3.get())
list((set(lista_cache)))
print("Valor seleccionado en lista: ", lista_cache)
lista_editada = list(filter(lambda x: x not in lista_cache, lista))
print("Lista a imprimir: ", lista_editada)
print("ID en if: ", lista_id[0])
if 'A' in lista_editada and lista_id[0] == 1:
lista_editada.remove('A')
print(lista_editada)
if 'B' in lista_editada and lista_id[0] == 2:
lista_editada.remove('B')
print(lista_editada)
if 'D' in lista_editada and lista_id[0] == 4:
lista_editada.remove('C')
print(lista_editada)
print("Reimpresion de lista: ",lista_editada)
combo1.config(values = lista_editada)
combo2.config(values = lista_editada)
combo4.config(values = lista_editada)
if id == 4:
lista_cache.append(combo_var4.get())
list((set(lista_cache)))
print("Valor seleccionado en lista: ", lista_cache)
lista_editada = list(filter(lambda x: x not in lista_cache, lista))
print("Lista a imprimir: ", lista_editada)
print("ID en if: ", lista_id[0])
if 'A' in lista_editada and lista_id[0] == 1:
lista_editada.remove('A')
print(lista_editada)
if 'B' in lista_editada and lista_id[0] == 2:
lista_editada.remove('B')
print(lista_editada)
if 'C' in lista_editada and lista_id[0] == 3:
lista_editada.remove('C')
print(lista_editada)
print("Reimpresion de lista: ",lista_editada)
combo1.config(values = lista_editada)
combo2.config(values = lista_editada)
combo4.config(values = lista_editada)
答案 0 :(得分:0)
我实际上搞砸了一个简单的任务。我要做的第一件事是将所有组合框值放在一个列表中,然后将其与活动的值进行比较,然后删除重复的值。
val = ['0',combo_var1.get(), combo_var2.get(), combo_var3.get(), combo_var4.get()]
lista_var = [i for i in lista if i not in val or val.remove(i)]
lista_var.insert(0,0)
combo2.config(values = lista_var)
combo3.config(values = lista_var)
combo4.config(values = lista_var)