我已经在这个网上搜索过,并没有提出任何问题,所以请原谅我这是一个愚蠢的问题,但是...
我编写了一个Tkinter类,它将.xlsx文件作为其进程之一的输入。您按下一个按钮,它使用TKFileDialog.askopenfile()弹出熟悉的文件输入对话框。但是,如果用户命中取消,则输入为NoneType,文件未打开,TKinter窗口以TypeError终止。
def GUIDocPullRename(self):
indir = self.e1.get()
Tab = askopenfile()
try:
tBook = xlrd.open_workbook(Tab)
except TypeError:
self.text.insert(END, "Canceled")
#Insert method-ender here
我想在异常catch中插入一些东西,阻止GUIDocPullRename继续运行,但允许父级TKinter进程继续运行,这样用户就可以指定另一个文件而无需重新运行整个程序。是可能还是我只是一个愚蠢的新手?
如果排除了try / except,则会出现错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1470, in __call__
return self.func(*args)
File "P:/Administrative/IT/Scripting/BillsPython/PdfMerger.py", line 102, in GUIDocPullRename
tBook = xlrd.open_workbook(Tab)
File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 394, in open_workbook
f = open(filename, "rb")
TypeError: coercing to Unicode: need string or buffer, NoneType found