Интерактивный список Tkinter
У меня есть два списка в моем пользовательском интерфейсе, pbs
а также f
, один рядом с другим. В pbs
У меня есть список проблем, которые связаны с несколькими именами файлов. Я хочу, чтобы когда одна из проблем pbs
щелкает, соответствующий список файлов, чтобы появиться в f
, Мне уже удалось получить индекс выбранного параметра из pbs
и файлы отображаются правильно после первого щелчка, но после нескольких щелчков отображаемые файлы представляют собой проблему, отличную от выбранной.
Также я не уверен, что правильно храню индекс. Я попробовал 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])
....