2017-02-07 21 views
0

私は最初に言いたいのは、他の人がこの問題を抱えていることを知っていますが、私はそれらの応答を見てきました。tkinterトレース方法エラー

私はエントリボックスをトレースしようとしており、エントリが正しいサイズであれば、SQLデータベースを検索して対応する値を見つけます。

https://i.stack.imgur.com/egSX6.pngはGUIで、条件が満たされている場合は、$を含むフィールドが更新されます。

私はエントリをチェックするために、このコードを追加:私はそれを実行すると

def update_winner(): 
    cursor = conn.cursor() 
    winner = winner_id.get() 
    school = school_name.get() 
    temp = school+winner 

    if len(temp) == 5: 

     cursor.execute("SELECT Rating FROM KIDS WHERE LocalID = ?", temp) 
     rating=cursor.fetchval() 
     cursor.execute("SELECT FirstName FROM KIDS WHERE LocalID = ?", temp) 
     name=cursor.fetchval() 

     winner_name.set(name) 

winner_id.trace("w",update_winner) 

ratings.mainloop() 

は、インスタントは、私は次のエラーを取得するwinner_idするフィードエントリの中には何も入れ:TypeError例外:update_winner()は0をとります位置的な議論ではなく3件が与えられた。

update_winner()の引数はどこから来ていますか?それはトレースメソッドで呼び出されていると私は何も渡しているとは思わない。

答えて

1

StringVarの内容が変更された場合、update_winner関数が3つの引数で呼び出されます(詳細はWhat are the arguments to Tkinter variable trace method callbacks?を参照)。あなたの関数は引数を取らないので、エラーTypeError: update_winner() takes 0 positional arguments but 3 were givenが返されます。

def update_winner():を修正するには、def update_winner(*args):に変更してください。

+0

完璧で、うまくいきました。私は実際に何が起こっているのか分かりませんが。それが何であるか説明できますか? – user3364161

+0

@ user3364161:http://stackoverflow.com/a/29697307/7432 –

+1

@ user3364161質問が一般的に '* args'と同じものなら、http://stackoverflow.com/questions/36901/what-does-doubleスター・スター・フォー・パラメータ –

関連する問題