ボタンのリスナーとして機能し、このボタンの上のいくつかのフィールドが入力されているかどうかを評価するコードがあります。
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 ブロックを実行しています。これは評価に問題があるのでしょうか、それとも何か不足していますか?