我想获取目录中的所有文件名并在列表框中将它们呈现给用户,然后用户可以选择多个名称并按确定或取消。如果他按 OK,它应该返回选定的文件名。请帮忙。
问问题
446 次
2 回答
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 教程点
于 2013-07-25T22:46:51.460 回答
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]
于 2013-07-25T23:33:08.437 回答