0

我有一段代码充当按钮的侦听器,并评估是否填写了此按钮上方的某些字段:

def goListener(self):
    if all( [self.nme.get() != "", self.dsc.get() != "", self.imp.get != ""] ):
        name = self.nme.get()
        desc = self.dsc.get()
        while True:
            try:
                imp = int(self.imp.get())
                break
            except:
                imp = int(self.imp.get())

当我运行这个程序时填写了不同的字段或以其他方式运行该程序时,它会正确并产生错误消息,我要求它对每个组合都要求它,除了填写 nme 和 dsc 但未填写 imp 的地方,这会产生错误消息:

Traceback (most recent call last):
  File "C:\Python33\lib\tkinter\__init__.py", line 1442, in __call__
    return self.func(*args)
  File "C:\Python33\todo.py", line 68, in goListener
    imp = int(self.imp.get())
ValueError: invalid literal for int() with base 10: ''

顺便说一下,这是运行 except 块,它不应该。这是评估的问题,还是我在这里遗漏了什么?

4

2 回答 2

4

你有:

self.imp.get != ""

您未能调用该.get()方法。尝试:

self.imp.get() != ""
于 2013-03-18T21:41:18.020 回答
3

如果imp = int(self.imp.get())抛出错误,在try块外再次调用它会抛出同样的错误。

except块用于出现异常时应运行的代码:

        try:
            imp = int(self.imp.get())
            break
        except:
            print "Something bad happened"
于 2013-03-18T21:39:22.897 回答