Два Listbox - связать построчно
Не волшебник, только учусь. Необходимо связать строчки в Listbox(ов) между собой, строчка 1=1, строчка 10=10 и т.д. Без сортировки все ОК, если в 1 Listbox применить Sort, то получается каламбур строчка 10=1 и.т.д.
Кусочек кода:
scrollbar = tk.Scrollbar(Form3)
scrollbar.pack(side="right", fill="y")
var0 = StringVar(Form3)
var1 = StringVar(Form3)
var2 = StringVar(Form3)
listbox_values = Variable()
listbox = tk.Listbox(Form3, listvariable=listbox_values, yscrollcommand=scrollbar.set)
listbox1 = tk.Listbox(Form3, font=("Arial", 10, "bold"))
listbox2 = tk.Listbox(Form3, font=("Arial", 10, "bold"))
def check_input(_event=None):
value = entry.get().lower()
if value == '':
listbox_values.set(lst)
else:
data = []
for item in lst:
if value.lower() in item.lower():
data.append(item)
listbox_values.set(data)
def on_change_selection(event):
selection = event.widget.curselection()
if selection:
index = selection[0]
data = event.widget.get(index)
var1.set(data)
check_input()
def close():
Form3.after(0, Form3.destroy)
Form3.mainloop()
entry = Entry(Form3)
entry.pack()
entry.bind('<KeyRelease>', check_input)
listbox.bind('<KeyRelease>', on_change_selection)
with open('reg.txt', 'r') as file:
lst = file.readlines()
for item in lst:
listbox.insert('end', item)
with open('reg1.txt', 'r') as file:
lst1 = file.readlines()
for item in lst1:
listbox1.insert('end', item)
with open('reg2.txt', 'r') as file:
lst2 = file.readlines()
for item in lst2:
listbox2.insert('end', item)
def print_selection():
value = listbox.get(listbox.curselection())
value1 = listbox1.get(listbox.curselection())
value2 = listbox2.get(listbox.curselection())
var0.set(value)
var1.set(value1)
var2.set(value2)
# Вывод выбора
close()
listbox.pack(side="left", fill="both")
listbox1.pack(side="left", fill="both")
listbox2.pack(side="left", fill="both")
scrollbar.config(command=listbox.yview)
listbox_values.set(lst)
Источник: Stack Overflow на русском