我用 Python Tkinter 编写了一个应用程序。我最近注意到,对于其中一项操作,如果该操作失败,它有时会关闭(没有给出任何错误)。我写了一个小程序来说明这个问题:-
import os
from Tkinter import *
def copydir():
src = "D:\\a\\x\\y"
dest = "D:\\a\\x\\z"
os.rename(src,dest)
master = Tk()
def callback():
global master
master.after(1, callback)
copydir()
print "click!"
b = Button(master, text="OK", command=copydir)
b.pack()
master.after(100, callback)
mainloop()
要重现该问题,请在“ms 命令提示符”中打开它将重命名的文件夹,以便重命名它会从 Tkinter 代码中引发异常。
我的原始代码使用线程并且也在执行其他任务,所以我试图使这个测试脚本中的操作尽可能相似。
现在,如果我通过双击运行此代码,则程序会简单地关闭而不会引发任何错误。但是如果我一直从控制台运行这个脚本,那么异常消息会被转储到控制台上,至少我知道,出了点问题。
我可以通过在尝试重命名的代码中使用 try/catch 来修复此代码,但我也想通知用户此失败。所以我只想知道在编写 Tkinter 应用程序时应该遵循哪些编码方法,我想知道:-
1)每当用户通过双击运行它时,我可以让我的脚本在文件中转储一些堆栈跟踪吗?至少,我会知道出了点问题并修复它。
2) 我可以阻止 tkinter 应用程序在出现此类错误时退出并在某些 TK 对话框中抛出任何异常。
感谢帮助!!