Python 绕过tkinters';askopenfilename文件类型检查
我使用tkinters的askopenfilename和一些预定义的文件类型:Python 绕过tkinters';askopenfilename文件类型检查,python,tkinter,Python,Tkinter,我使用tkinters的askopenfilename和一些预定义的文件类型: tkinter.filedialog.askopenfilename(parent=self, title=_("Select Attachment"), multiple=False, initialdir=
tkinter.filedialog.askopenfilename(parent=self,
title=_("Select Attachment"),
multiple=False,
initialdir=initialdir,
filetypes=filetypes)
文件类型包括“png”、“jpg”、“bmp”和
“文件”对话框将仅显示我所期望的指定类型的文件。
但是当我输入文件名时,它只会接受它,不管它是哪种类型
这是tkinter的bug吗?这是预期行为吗?我是否需要解决方法,或者我是否可以更改AskopenFileName的行为?我希望这是预期的行为。毕竟--
因此,无论您做什么,用户都可以通过使用程序的一个白名单扩展名重命名文件来绕过它。当然,如果您真的想变得健壮,可以读取前几个字节,希望这是正确的;-) 当然,用户可以通过重命名来作弊。当文件不存在(从askopenfilename处理)或给定的文件类型意外(从我的代码处理)时,有不同的行为是很难看的。区别很明显…一方面askopenfilename保持打开状态,等待新的文件名,另一方面askopenfilename在无效文件名后关闭并重新打开。我从未意识到这是每个文件对话框的预期行为。