将数据元素附加到tkinter Listbox元素

时间:2016-03-28 16:21:52

标签: python-3.x tkinter listbox

我正在使用tkinter和python 3.2

我正在制作音频标签编辑器,需要一种在用户导入后显示音频文件的方法。我使用Listbox来执行此操作。对于我传递给insert方法的字符串,我使用文件名,但我需要一种方法来存储完整路径。它需要与它对应的列表元素相关联,这样当用户选择元素时,我可以使用完整路径查看文件并显示当前音频标签以进行编辑。 Diagram of links between elements and data

有没有办法建立这种关联,所以每个列表元素都指向某种数据结构(在这个例子中包含文件路径的字符串)?我可以触发逻辑来使用listbox本身的绑定来访问它,但我需要知道如何将数据结构与每个列表元素相关联。

1 个答案:

答案 0 :(得分:1)

要获取有关列表框方法的更多信息,您可以use this reference

您可以使用dict将文件名与其完整路径相关联:

files_to_show = {os.path.basename(name):name 
                      for name in FULL_PATHS_SOURCE}

然后在列表框中,您可以使用.curselection()获取当前选择的索引,然后使用.get()方法获取每个条目的文本:

(listbox.get(i) for i in listbox.curselection())

然后获取完整路径只需在dict中查找:

selected_full_paths = [files_to_show[listbox.get(i)]
                        for i in listbox.curselection()]

或更详细地说:

selected_full_paths = []
for selected_i in listbox.curselection():
    selected_text = listbox.get(i)
    full_path = files_to_show[selected_text]
    selected_full_paths.append(full_path)