Python 如何使用tkinter filedialog.askopenfilename方法避免在文件选择器中隐藏文件?
我想允许用户从文件管理器中选择CSV文件。但它也显示了所有隐藏的文件夹,这是非常不合适的。如何避免隐藏文件夹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
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应用程序的文件选择器中,所有隐藏的文件夹都会显示出来。我在期待一些使用正则表达式的技巧。我试过一些,但不起作用。你知道如何修改它以使其起作用吗?我设法使它起作用,这非常有用,我认为如果你解释一下内部尝试的重要性,答案会更好,除了块,这一点最初让我感到不适