300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python另存为对话框_python – 另存为文件对话框 – 如何不允许覆盖

python另存为对话框_python – 另存为文件对话框 – 如何不允许覆盖

时间:2022-07-08 22:47:43

相关推荐

python另存为对话框_python – 另存为文件对话框 – 如何不允许覆盖

我正在尝试在tkinter中创建一个savefile对话框.我需要保存文件名以便以后使用.但是,我不希望filedialog接受选择已存在的文件名.

到目前为止我只有这个:

from tkinter import filedialog

my_file = filedialog.asksaveasfilename(defaultextension = ".myfile",

filetypes = [("MYSUPERFILE", ".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()

return

messagebox.showarning("The current file name already exists. Please give another name to save your file.")

else:

head, tail = os.path.split(file)

if not os.path.isdir(head):

self.master.bell()

return

self.quit(file)

所以,它看起来很简单.然后我想:我需要创建自己的asksaveasfilename函数.

我去检查来源:

def asksaveasfilename(**options):

"Ask for a filename to save as"

return SaveAs(**options).show()

嗯..我需要看看SaveAs在做什么.

class SaveAs(_Dialog):

"Ask for a filename to save as"

command = "tk_getSaveFile"

Aaannddd ……我迷路了.我不明白这些碎片是如何组合在一起的. ‘SaveAs’只有tk_getSaveFile命令. SaveFileDialog如何在这里使用?我怎样才能创建自己的myasksaveasfilename函数?

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。