抱歉,如果这是一个愚蠢的问题......但我是学习Python的新手,这是一个家庭作业问题......
所以我想阻止人们使用tkinter重新打开已经加载的文件 - 并在尝试打开文件时弹出错误对话框。
到目前为止,我已经得到了这个:
from tkinter import filedialog
from tkinter import messagebox
def open_file(self):
openfiles=[]
filename = filedialog.askopenfilename(filetypes=[("allfiles","*.txt")])
if filename not in openfiles:
openfiles.append(filename)
self._filename = filename
functiontoloadfile(filename)
else:
messagebox.showerror(filename + "is already open")
答案 0 :(得分:1)
假设open_files()
是一个不属于类的函数,您可以像这样保留openfiles
列表:
openfiles=[]
def open_file(self):
filename = filedialog.askopenfilename(filetypes=[("allfiles","*.txt")])
if filename not in openfiles:
openfiles.append(filename)
functiontoloadfile(filename)
else:
messagebox.showerror(filename + "is already open")
这将使openfiles
列表保持在open_file
函数的多个调用之间。当然,您需要确保在文件关闭时从该列表中删除,这可能会让您头疼不已。
更好的方法可能是,您可以检测哪些UI元素正在显示文件,并根据这些UI元素的存在来推断文件是否打开。
答案 1 :(得分:0)
在python中,如果你尝试打开一个已打开的文件,你可能会出现如下错误:
try:
myfile = open("myfile.csv", "r+") # or "a+", whatever you need
except IOError:
print "Is already open"