我正在尝试在tkinter中创建一个savefile对话框.我需要保存文件名以便以后使用.但是,我不希望filedialog接受选择已存在的文件名.
到目前为止我只有这个:
from tkinter import filedialog
my_file = filedialog.asksaveasfilename(defaultextension = ".myfile",
filetypes = [("MY SUPER FILE", ".myfile"),
("All files", ".*")])
一种可能性是获取文件名,检查它是否存在(使用os.path.isfile)并再次询问用户是否存在具有相同名称的文件的新名称.但是,tkinter filedialog会询问用户“文件是否已存在.是否要覆盖?”.因此,如果稍后我告诉用户我不接受文件名选择,这似乎令人困惑.有没有办法强制tkinter filedialog不要求用户覆盖?
编辑:根据答案中的建议,我尝试创建自己的保存文件对话框.
我基本上只在tkinter保存对话框中添加了一个警告:
class MySaveFileDialog(filedialog.FileDialog):
""" File save dialog that does not allow overwriting of existing file"""
def ok_command(self):
file = self.get_selection()
if os.path.exists(file):
if os.path.isdir(file):
self.master.bell