Два Listbox - связать построчно

Рейтинг: 0Ответов: 0Опубликовано: 31.05.2023

Не волшебник, только учусь. Необходимо связать строчки в 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)

Ответы

Ответов пока нет.