我正在使用tkinter和python 3.2
我正在制作音频标签编辑器,需要一种在用户导入后显示音频文件的方法。我使用Listbox
来执行此操作。对于我传递给insert
方法的字符串,我使用文件名,但我需要一种方法来存储完整路径。它需要与它对应的列表元素相关联,这样当用户选择元素时,我可以使用完整路径查看文件并显示当前音频标签以进行编辑。
有没有办法建立这种关联,所以每个列表元素都指向某种数据结构(在这个例子中包含文件路径的字符串)?我可以触发逻辑来使用listbox
本身的绑定来访问它,但我需要知道如何将数据结构与每个列表元素相关联。
答案 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)