【问题标题】:Interactive Listbox Tkinter交互式列表框 Tkinter
【发布时间】:2014-08-12 15:17:30
【问题描述】:

我的用户界面中有两个列表框,pbsf,一个挨一个。在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()

【问题讨论】:

    标签: python listbox tkinter interactive


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复。只有在 for 循环中,我才使用 files 而不是 problems。我还想知道在我做出选择后如何擦除第二个列表框中的输出。你能帮我解决这个问题还是我应该编辑我的问题?
    • @user1956190,我不明白你想要什么。要从第二个列表框中删除项目,请使用 delete: f.delete(0, END)(将此行放在 for 循环之前)
    • 是的,这就是我想要的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    相关资源
    最近更新 更多