-1

我想获取目录中的所有文件名并在列表框中将它们呈现给用户,然后用户可以选择多个名称并按确定或取消。如果他按 OK,它应该返回选定的文件名。请帮忙。

4

2 回答 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 回答