如何使用 tkinter filedialog.askopenfilename 方法避免文件选择器中隐藏文件?

Blo*_*rts 8 python tkinter python-3.x

我想允许用户从文件管理器中选择 CSV 文件。但它也显示了所有隐藏文件夹,这是非常不合适的。如何避免隐藏文件夹?

def importCSV(self):
            self.file =  filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("CSV files","*.csv"),("all files","*.*")))
Run Code Online (Sandbox Code Playgroud)

Man*_*ian 9

经过一番搜索后,我设法在这里找到了答案。我对链接的示例做了一些细微的更改,以便它可以在 Python 3 上运行。要测试它,只需ctrl+o在执行后按 。

from tkinter import *
from tkinter import filedialog

root = Tk()

try:
    # call a dummy dialog with an impossible option to initialize the file
    # dialog without really getting a dialog window; this will throw a
    # TclError, so we need a try...except :
    try:
        root.tk.call('tk_getOpenFile', '-foobarbaz')
    except TclError:
        pass
    # now set the magic variables accordingly
    root.tk.call('set', '::tk::dialog::file::showHiddenBtn', '1')
    root.tk.call('set', '::tk::dialog::file::showHiddenVar', '0')
except:
    pass

# a simple callback for testing:
def openfile(event):
    fname = filedialog.askopenfilename(initialdir='/', title='Select file', filetypes=(('CSV files', '*.csv'), ('all files', '*.*')))
    print(fname)
root.bind('<Control-o>', openfile)

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

用于showHiddenVar选择是否默认显示隐藏文件。如果您不想允许用户在显示和隐藏隐藏文件之间切换,则只需设置showHiddenBtn'0'


Vin*_*Sai -1

filedialog.askopenfilename此行仅打开操作系统的文件选择器。这不是Python 的文件选择器。

show hidden files您可以在操作系统中禁用该选项,它们也会在文件选择器中消失。

对于 Windows,此选项在控制面板的文件资源管理器选项中可用。

对于 Ubuntu,此选项位于 filemanager > top menu->View->Show hidden files