Python - Tkinter语言 - 错误消息框-文件已在使用-拒绝权限



我试图通过Tkinter应用程序将数据保存在文件中。如果文件已经存在并且当前由另一个应用程序打开,我可以,当然,不写在上面,但我想通知用户该文件在其他地方打开。

在Python控制台(Spyder)中,我收到以下消息:

Exception in Tkinter callback
[...]
File "MyFile.py", line 200, in plot_data_save_file
file=open(file_name,"w")
PermissionError: [Errno 13] Permission denied: "FileToSaveDataIn.xy"

我知道如何创建一个Tkinter消息框,但我怎么知道Python控制台是否引发了错误并将此信息传递给Tkinter?

您需要的是一个try/except语句。这允许您尝试一些代码,如果它出错,您可以捕获该错误并按照您想要的方式使用它。在本例中,我将它打印到控制台,但您可以简单地使用相同的变量来加载到消息框。

下面是一个try/except语句的简单示例:
import tkinter.messagebox as box
try:
# ... Some logic here ...
except BaseException as e:
print('Exception: {}'.format(e))
# This line should work for your needs
# box.showerror('Error!', 'Exception: {}'.format(e))

通常情况下,你会想要为错误编写特定的处理程序,而不是像我在这里所做的那样做一个通用的异常,但为了说明原因,这就足够了。