2016-11-16 8 views
0

ユーザが入力ボックスから入力した入力が特定の範囲内の有効な整数であるかどうかをチェックする関数を必要とするコードを開発しています以前はラベルにあったテキストを上書きするのではなく、ユーザーが無効な整数を入力するたびにエラーメッセージを出力するようにプログラムを設定しましたが、そこに古いエラーメッセージが残されます。どのようにして既存のラベルを上書き/書き直すことができますか?ここでTkinterのラベルにテキストを書き直す方法

は、これまでのところ、私の関数である。

def Entry_check(): 

ErrorMessage = Label(text = '', fg = 'red') 
ErrorMessage.grid() 

if a.get().isdigit(): #Let 'a' be entry #1 
    if int(a.get()) < 1 or int(a.get()) > 10: 
     ErrorMessage.config(text = 'This is invalid') 
    else: 
     Var1 = a.get() #Var1 now assigned to value in entry #1 
     if b.get().isdigit(): #Let 'b' be entry #2 
      if int(b.get()) < 2 or int(b.get()) > 5: 
       ErrorMessage.config(text = 'This is invalid') 
      else: 
       Var2 = b.get() #Var2 now assigned to value in entry #2 
     else: 
      ErrorMessage.config(text = 'This is invalid') 
else: 
    ErrorMessage.config(text = 'This is invalid') 

すべてのヘルプは非常に高く評価されるだろう。

ErrorMessage = Label(text = '', fg = 'red') 

あなたがEntry_checkを呼び出すたびに実行されます。この行があるため

+0

'にErrorMessage [「テキスト」] =「新しいテキスト」'または 'ErrorMessage.config(text =" new text ")' – furas

+0

エラーメッセージが表示されますか?問題のFULLエラーメッセージを常に表示してください。あなたは 'IntError'をどこで宣言しますか? 'b'とは何ですか? – furas

+0

エラーメッセージはありません。注釈付きのbは、エントリ#2です(同じ方法では、エントリ#1です)。そして「IntError」と言って申し訳ありませんが、これは私が今変更した「ErrorMessage」と言うことになっています。ありがとうございました。 – PythonProgrammingIsBae

答えて

3

新しいラベルは、あなたがエラーチェックを行うたびに作成されています。

この行を関数の外に移動すると、1回だけ作成されます。あなたのコードの他の部分を見ずに、どこのウィジェットを作成したのかは分かりません。

(あなたはまた、保守のために、それに伴いErrorMessage.grid()を移動する必要がありますが、それは今ここで私はそれが積極的に有害ではないと思う)

+0

これは完璧に動作します。どうもありがとうございます!私はそのようなことをどうやって逃すことができないのか分かりません。 – PythonProgrammingIsBae

関連する問題