【问题标题】:How to avoid hidden files in file picker using tkinter filedialog.askopenfilename method?如何使用 tkinter filedialog.askopenfilename 方法避免文件选择器中的隐藏文件?
【发布时间】:2018-11-09 06:14:59
【问题描述】:

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

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

【问题讨论】:

    标签: python python-3.x tkinter


    【解决方案1】:

    经过一番搜索,我设法找到了答案here。我对链接的示例做了一些细微的更改,以便它可以在 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()
    

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

    【讨论】:

    • 你知道如何修改它以使用pysimplegui.readthedocs.io/en/latest吗?
    • 我设法让它工作了,这非常有用,我认为如果你解释一下内部 try except 块的重要性,答案会更好,这让我最初感到厌烦
    • @Manolis Agkopian - 解释为什么需要 try-catch 块会非常有用。谢谢!
    • @VikasGoel 这不是我的代码,它是根据我在上面发布的讨论链接上找到的代码改编的。不幸的是,它现在已经死了,archive.org 没有它。无论哪种方式,我认为其目的在代码中的 cmets 中都有说明。
    • @ManolisAgkopian - 感谢您的回复(以及发布解决方案)。该代码记录了意图,但没有记录引发错误的原因。也许与原始问题正交,但仍然很高兴知道为什么需要破解。
    【解决方案2】:

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

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

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

    对于 Ubuntu,此选项可在 filemanager &gt; top menu-&gt;View-&gt;Show hidden files 获得

    【讨论】:

    • 我已经禁用了“显示隐藏文件”选项。但仍然是同样的问题。
    • 我无法显示和显示隐藏文件。通过使用相同的选项。您使用的是哪种操作系统。
    • Linux ubuntu 18.04
    • filemanager &gt; top menu-&gt;View-&gt;Show hidden files,取消选中此项,隐藏文件将消失。但是如果用户有他自己的隐藏文件,它们仍然是可见的。
    • 我已经这样做了,隐藏文件没有显示在我的文件管理器中。但是在 python Tkinter 应用程序的文件选择器中,所有隐藏的文件夹都显示出来了。我期待一些使用正则表达式的技巧。我尝试了一些,但不起作用。
    猜你喜欢
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 2015-09-04
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    相关资源
    最近更新 更多