python - 交互式列表框 Tkinter

标签 python listbox tkinter interactive

我的用户界面中有两个列表框,pbsf,一个紧挨着另一个。在 pbs 中,我有一个与多个文件名相关联的问题列表。我希望当单击 pbs 中的问题之一时,相应的文件列表会出现在 f 中。到目前为止,我已设法从 pbs 获取所选选项的索引,并且文件在第一次单击后正确显示,但在多次单击后,显示的文件来自除所选问题之外的其他问题。

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

  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()

最佳答案

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

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

关于python - 交互式列表框 Tkinter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24351420/

相关文章:

python - 如何使用Python中的Tkinter,使用几个选定颜色的迭代来更改Python中的圆圈颜色,这些颜色随着每次按下按钮而变化?

python-3.x - Tkinter视频的闪烁视频

python - Django REST 自定义错误

python - 命名实体识别黄金标准语料库的样本量

javascript - Web 的多选控件

jquery - 如何使用 jquery 读取列表框中所有项目的值

python - C 中的 "Unpacking"

python - Pandas |以逗号分隔的组的所有值进行分组

c++ - 如何使用 C++ 在列表框中显示字符串?

python - 为什么此代码仅适用于 Something() 中的 *args?