2016-12-30 7 views
0

ボタンをクリックしたときに呼び出される関数を記述していますが、この関数を呼び出す前にクラス変数を変更したいと思います。Tkinter:ボタンを押したときにクラス変数を変更する

どのようにボタンで行うのですか?

calculatebutton = Button(self, text="run function", command=self.calculate_total(self.totals)) 
calculatebutton.place(x=150, y=600) 

この私の機能を実行しますが、私はまた、クラス変数を変更したい、と私は関数を実行する前にそれを変更したい:として今私は次のようにボタンを宣言しました。

+1

'command = lambda q = self.totals:self.calculate_total(q)'動かない場合:ボタンにバインドする前に 'q'を定義します。 'q = self.totals;コマンド=ラムダ:self.calculate_total(q) '。最後の変更には最後の値が必要でした。 – dsgdfg

+1

'command'は'() 'のない関数名を期待していますので、' calculate_total() 'はstartで実行され、その結果は関数名として' command'に割り当てられます。 'calculate_total()'が 'None'を返した場合は' comman = None'となります。あなたは 'lambda'を使って引数で関数を正しく割り当てることができます。 – furas

答えて

1

メソッドを新しいメソッドでラップすることができます。メソッドを呼び出す前に、必要な処理を行うことができます。

def wrapper(self): 
    self.your_value = new_value 
    self.calculate_total(self.totals) 

calculatebutton = Button(self, text="run function", command=self.wrapper) 
calculatebutton.place(x=150, y=600) 

はまた、あなたがボタン、you should use lambdasから呼び出すときに、あなたのメソッドに引数を渡したい場合は、注意してください。

関連する問題