我正在编写一个Tkinter程序,该程序会加载一些.png图像。
由于文件可能有故障或不存在,因此最好使用try-except块。我首先使用通用Python检查文件。然后,如果通过通用的Python try-except块,则将图像文件加载到Tkinter中:
ok = True
try:
image_file = open("cat.png")
image_file.close()
except IOError:
ok = False
if ok:
self.image = PhotoImage(file="cat.png")
这必须加载两次图像文件:一次用于Python检查,一次用于Tkinter。同样,不能保证Tkinter图像加载尝试将起作用。如果文件是通过网络到达的,则该文件可能可用于Python try-except调用,但随后突然不可用于Tkinter调用。
当我通过调用不可用的文件有意使程序崩溃时,我得到:
tkinter.TclError: couldn't open "fakefile.png": no such file or directory
这正是我试图在Tkinter中捕获的错误类型(找不到文件)。我已经四处寻找,但无法找到Tkinter尝试的方法,除了它自己的调用:PhotoImage(...)
。
如何安全地加载PNG?
答案 0 :(得分:4)
您无需进行tkinter尝试-除了它自己的调用外;只需尝试-除外您对tkinter的呼叫:
try:
self.image = PhotoImage(file="cat.png")
except tkinter.TclError:
# do whatever you wanted to do instead
例如:
try:
self.image = PhotoImage(file="cat.png")
except tkinter.TclError:
self.cat = Label(text="Sorry I have no cat pictures")
else:
self.cat = Label(image=self.image)