交互式列表框Tkinter

时间:2014-06-22 12:53:24

标签: python listbox tkinter interactive

我的用户界面中有两个列表框,pbsf,一个在另一个旁边。在pbs中,我列出了一些与多个文件名相关联的问题。我希望在单击pbs中的一个问题时,相应的文件列表将显示在f中。到目前为止,我已经设置了从pbs获取所选选项的索引,并且在第一次单击后文件显示正确,但是几次单击后,显示的文件来自其他问题,而不是选定的文件。

此外,我不确定我是否正确存储索引。我尝试了两个选项:

  1. 将问题和文件的名称存储在字典中 - 这里的问题是我的条目是有序的,我不想要这个;我完全按照我输入的方式要求他们
  2. 有一个列出问题的列表和一个包含文件的列表 - 这里的问题是我无法将列表框中的索引作为整数
  3. 这些是问题和文件(作为字典和列表):

    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 个答案:

答案 0 :(得分:2)

使用Listbox.curselection,您可以获得所选项目的指标。 indices是一个字符串列表;你应该将字符串转换为整数。

def immd(e):
    indice = pbs.curselection()
    index = int(indice[0])
    ....