Open Multiple Filenames In Tkinter And Add The Filesnames To A List
Solution 1:
askopenfilenames
returns a string instead of a list, that problem is still open in the issue tracker, and the best solution so far is to use splitlist
:
import Tkinter,tkFileDialog
root = Tkinter.Tk()
filez = tkFileDialog.askopenfilenames(parent=root, title='Choose a file')
print root.tk.splitlist(filez)
Python 3 update:
tkFileDialog
has been renamed, and now askopenfilenames
directly returns a tuple:
import tkinter as tk
import tkinter.filedialogas fd
root = tk.Tk()
filez = fd.askopenfilenames(parent=root, title='Choose a file')
Solution 2:
askopenfilenames
returns a tuple of strings, not a string. Simply store the the output of askopenfilenames into filez (as you've done) and pass it to the python's list method to get a list.
filez = tkFileDialog.askopenfilenames(parent=root,title='Choose a file')
lst = list(filez)
>>> type(lst)
<type'list'>
Solution 3:
Putting together parts from above solution along with few lines to error proof the code for tkinter file selection dialog box (as I also described here).
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
Returns a list of the paths of the files. Can be stripped
to show only the actual file name for further use by using the following code:
fileNames = []
forpathin filePaths:
name = path[46:].strip()
name2 = name[:-5].strip()
fileNames.append(name2)
fileNames
where the integers (46) and (-5) can be altered depending on the file path.
Solution 4:
In Python 3, the way it worked for me was this (respect lowercase):
from tkinter.filedialog import askopenfilenames
filenames = askopenfilenames(title = "Open 'xls' or 'xlsx' file")
for filename in filenames:
# print or do whatever you want
I hope you find it useful! Regards!
Post a Comment for "Open Multiple Filenames In Tkinter And Add The Filesnames To A List"