Открыть несколько имен файлов в tkinter и добавить имена файлов в список
что я хочу сделать, это выбрать несколько файлов
используя tkinter filedialog
а затем добавьте эти элементы в список.
После этого я хочу использовать список для обработки
каждый файл по одному.
#replace.py
import string
def main():
#import tkFileDialog
#import re
#ff = tkFileDialog.askopenfilenames()
#filez = re.findall('{(.*?)}', ff)
import Tkinter,tkFileDialog
root = Tkinter.Tk()
filez = tkFileDialog.askopenfilenames(parent=root,title='Choose a file')
Теперь я могу выбрать несколько файлов,
но я не знаю, как добавить эти имена файлов в список.
любые идеи?
Ответы
Ответ 1
askopenfilenames
возвращает строку вместо списка, эта проблема по-прежнему открыта в трекер ошибок, и наилучшим решением на данный момент является для использования splitlist
:
import Tkinter,tkFileDialog
root = Tkinter.Tk()
filez = tkFileDialog.askopenfilenames(parent=root,title='Choose a file')
print root.tk.splitlist(filez)
Ответ 2
askopenfilenames
возвращает кортеж строк, а не строку.
Просто сохраните вывод askopenfilenames в filez (как вы это сделали) и передайте его в метод python list, чтобы получить список.
filez = tkFileDialog.askopenfilenames(parent=root,title='Choose a file')
lst = list(filez)
>>> type(lst)
<type 'list'>
Ответ 3
Соединение частей решения сверху вместе с несколькими строками для защиты от ошибок кода для диалогового окна выбора файла tkinter (как я также описал здесь).
import tkinter as tk
from tkinter import filedialog
root = tk.Tk()
root.withdraw()
root.call('wm', 'attributes', '.', '-topmost', True)
files = filedialog.askopenfilename(multiple=True)
%gui tk
var = root.tk.splitlist(files)
filePaths = []
for f in var:
filePaths.append(f)
filePaths
Возвращает список путей к файлам. Может быть stripped
, чтобы показывать только фактическое имя файла для дальнейшего использования, используя следующий код:
fileNames = []
for path in filePaths:
name = path[46:].strip()
name2 = name[:-5].strip()
fileNames.append(name2)
fileNames
где целые числа (46) и (-5) могут быть изменены в зависимости от пути к файлу.