Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用tkinter filedialog.askopenfilename方法避免在文件选择器中隐藏文件?_Python_Python 3.x_Tkinter - Fatal编程技术网

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

Python 如何使用tkinter filedialog.askopenfilename方法避免在文件选择器中隐藏文件?,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我想允许用户从文件管理器中选择CSV文件。但它也显示了所有隐藏的文件夹,这是非常不合适的。如何避免隐藏文件夹 def importCSV(self): self.file = filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("CSV files","*.csv"),("all files","*.*"))) filedialog.askopenfilenam

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

def importCSV(self):
            self.file =  filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("CSV files","*.csv"),("all files","*.*")))
filedialog.askopenfilename此行仅打开操作系统的文件选择器。这不是Python的文件选择器

您可以禁用在操作系统中显示隐藏文件的选项,这些文件也将在文件选择器中消失

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


对于Ubuntu,这个选项在文件管理器>顶部菜单->查看->显示隐藏文件中可用。在我搜索了一段时间后,我找到了答案。我对链接的示例做了一些细微的更改,以便它可以在Python3上运行。要测试它,只需在执行后按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”。

我已经禁用了“显示隐藏文件”选项。但还是一样的问题。我无法显示和显示隐藏的文件。通过使用相同的选项。你正在使用哪个操作系统。Linux ubuntu 18.04文件管理器>顶部菜单->查看->显示隐藏文件,取消选中此项,隐藏文件将消失。但是,如果用户有自己的隐藏文件,这些文件将仍然可见。我已经这样做了,隐藏文件不会显示在我的文件管理器中。但在python Tkinter应用程序的文件选择器中,所有隐藏的文件夹都会显示出来。我在期待一些使用正则表达式的技巧。我试过一些,但不起作用。你知道如何修改它以使其起作用吗?我设法使它起作用,这非常有用,我认为如果你解释一下内部尝试的重要性,答案会更好,除了块,这一点最初让我感到不适