open multiple filenames in tkinter and add the filesnames to a list

后端 未结 4 835
别跟我提以往
别跟我提以往 2020-12-28 08:16

what I want to do is to select multiple files using the tkinter filedialog and then add those items to a list. After that I want to use the list to process each file one by

相关标签:
4条回答
  • 2020-12-28 08:34

    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!

    0 讨论(0)
  • 2020-12-28 08:35

    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 = []
    for path in 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.

    0 讨论(0)
  • 2020-12-28 08:39

    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)
    
    0 讨论(0)
  • 2020-12-28 08:54
    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'>
    
    0 讨论(0)
提交回复
热议问题