结束TKinter类方法而不杀死主线程

时间:2014-08-14 17:09:04

标签: python multithreading tkinter

我已经在这个网上搜索过,并没有提出任何问题,所以请原谅我这是一个愚蠢的问题,但是...

我编写了一个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

0 个答案:

没有答案