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

在Tkinter中创建一个保存文件对话框时,作者希望保存文件名以备后用,同时不允许用户覆盖已存在的文件。他们遇到了filedialog默认允许覆盖的问题,并考虑通过检查文件是否存在来解决,但担心这会让用户感到困惑。经过尝试,作者决定创建自己的保存文件对话框,以防止覆盖行为。然而,在深入源码后,作者遇到了困难,不清楚如何将自定义的SaveAs类与现有功能整合,以创建新的asksaveasfilename函数。
摘要由CSDN通过智能技术生成

我正在尝试在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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值