Интерактивный список Tkinter

У меня есть два списка в моем пользовательском интерфейсе, pbs а также f, один рядом с другим. В pbs У меня есть список проблем, которые связаны с несколькими именами файлов. Я хочу, чтобы когда одна из проблем pbs щелкает, соответствующий список файлов, чтобы появиться в f, Мне уже удалось получить индекс выбранного параметра из pbs и файлы отображаются правильно после первого щелчка, но после нескольких щелчков отображаемые файлы представляют собой проблему, отличную от выбранной.

Также я не уверен, что правильно храню индекс. Я попробовал 2 варианта:

  1. хранение названия проблем и файлов в словаре - проблема здесь в том, что мои записи упорядочены, и я не хочу этого; Я хочу, чтобы они были такими, какими я их ввел
  2. имея список с проблемами и список с файлами - проблема здесь в том, что я не могу получить индекс из списка в виде целого числа

Это проблемы и файлы (как словарь и как списки):

problems = {
'pb_1':['1.txt','2.txt','3.txt'],
'pb_a':['a_1.txt','a_2.txt','a_3.txt']
}

problems=['pb_1','pb_a']
files=[['1.txt','2.txt','3.txt'],['a_1.txt','a_2.txt','a_3.txt']]

и это код:

def immd(e):
    for i in problems[pbs.get('active')]:
        f.insert(END,i)

root = Tk()
root.title('Title') 

frame2 = Frame(root)
frame2.pack(side=RIGHT)
l3 = Label(frame2, text='Problems:').grid(row=0,column=0)
pbs = Listbox(frame2, height=10)
pbs.grid(row=1,column=0)
for i in problems:
    pbs.insert(END,i)
pbs.bind('<<ListboxSelect>>',immd)

l4 = Label(frame2, text='Files:').grid(row=0,column=1)
f = Listbox(frame2, height=10)
f.grid(row=1,column=1)

root.mainloop()

1 ответ

Решение

С помощью Listbox.curselection Вы можете получить индекс выбранных предметов. indices - это список строк; Вы должны преобразовать строки в целые.

def immd(e):
    indice = pbs.curselection()
    index = int(indice[0])
    ....
Другие вопросы по тегам