我想在目录中获取所有文件名并在列表框中将其显示给用户,然后用户可以选择多个名称并按“确定”或“取消”。如果他按OK,它应该返回选定的文件名。请帮忙。
答案 0 :(得分:2)
这是使用Tkinter的一种相当简单的方式:
from Tkinter import *
root = Tk()
opt_list = ['opt1','opt2','opt3','opt4','opt5']
sel_list = []
def get_sel():
sel_list.append(Lb1.curselection())
root.destroy()
def cancel():
root.destroy()
B = Button(root, text ="Submit", command = get_sel)
C = Button(root, text ="Cancel", command = cancel)
Lb1 = Listbox(root, selectmode=MULTIPLE)
for i,j in enumerate(opt_list):
Lb1.insert(i,j)
Lb1.pack()
B.pack()
C.pack()
root.mainloop()
for i in sel_list[0]:
print opt_list[int(i)]
然后你可以这个来获得所选的选项:
for i in sel_list[0]:
print opt_list[int(i)]
这将使用sel_list
中的项目创建一个列表框,然后当用户按下提交时,它将返回一个选择了哪些行的元组
可以一次选择多个,并在元组中返回,从此网站获取更多信息Python Tk Tutorials Point
答案 1 :(得分:0)
更具体地说,您想要的是http://tkinter.unpythonic.net/wiki/tkFileDialog
#python 3
from tkinter.filedialog import askopenfilename
filenames = askopenfilename(multiple=True)
这将返回该人选择的文件的路径列表,以提取文件名:
import os
filenames = [os.path.basename(filename) for filename in filenames]
如果你想要没有扩展名的文件名,而不是上面的行使用:
filenames = [os.path.splitext(os.path.basename(filename))[0] for filename in filenames]