まず、OOPを使用していないのは残念ですが、私はちょうどそのような小さなプログラムの複雑さを避けることに決めました。類似の検証関数が機能しない
from tkinter import *
root = Tk()
root.title("Entry Validation")
root.geometry("300x100")
def validation_function(text):
if len(text) <= 5:
try:
text = int(text)
return True
except:
return False
else:
return False
vcmd = root.register(validation_function)
entry = Entry(root, validate='key', validatecommand=(vcmd, "%P"))
entry.pack()
それは正常な動作します: は、だからここに私のプログラムです(基本的には、それが唯一の最大長である5の整数で構成されたテキストを許可するエントリウィジェットです)。しかし、私は検証関数のボディに少し変更を加えたとき、それは動作しません:
def validation_function(text):
try:
text = int(text)
if len(text) <= 5:
return True
else:
return False
except:
return False
私は、問題はここにあると感じ:
except:
return False
おそらく最大の長さの一部にはありません試してみるといいですよね。ただし、
def validation_function(text):
try:
if len(text) <= 5:
return True
else:
return False
except:
return False
が正しく動作します。しかし、最大の長さの部分だけがあります、私はまたそれが整数だけを許可したいです。私は最初の例でそれをやったことがありますが、私の質問は:私は最大長部分の場所を唯一の整数部分で変更すると、なぜ動作しないのですか?あなたがlen(int)
を呼び出すことはできません
は理由を説明せずに、私の質問にdownvoteしないでくださいしてみてください例外
を発生させます!それは私の特権を制限する。私はちょうどここに新しい、みんな、来て! –