现在我正在使用Tkinter提示用户输入文件。
Tk().withdraw() # keep the root window from appearing
file_path = askopenfilename() # show dialog box and return file path
# check if extension is valid
如果用户选择了错误的文件类型,我会用新窗口重新提示它们。
是否有办法保持相同的tkinter窗口打开,除非所选文件有效?
所以不要这样:
# 1) prompt user to open file
# 2) close file browser window
# 3) check if extension is valid
# 4) if not, print error and re-prompt user with new browser window
我想这样做:
# 1) prompt user to open file
# 2) check if extension is valid while keeping window open
# 3) if not, print error, re-prompting with same window
感谢任何帮助。
答案 0 :(得分:1)
如果您希望用户打开特定文件类型,请使用filetypes
参数。它需要一个文件类型定义列表,您可以将其指定为描述和扩展名:
filepath = askopenfilename(filetypes = [
('Text Files', '.txt'),
('Python Scripts', '.py'),
('INI Files', '.ini')
])
答案 1 :(得分:0)
您可以将文件浏览器窗口设置为仅显示您要用户选择的文件类型,但是通过选择类型下拉框,他们可以轻松地解决这个问题。然而,您可以在文件选择(用户单击确定以选择文件并关闭文件浏览器窗口)检查文件扩展名是否是您想要的类型之一,如果不是简单清除文件路径变量并调用文件浏览器再次打开功能。这样他们就会被选中一个文件,直到他们选择正确的文件类型。然而,这确实存在这样的问题,可能不知道为什么他们回到他们的起点,所以你可能想要在重新打开文件浏览器窗口之前添加一个弹出窗口或其他东西,以使其更加用户友好。