2017-05-04 12 views
0

tkinterボタンでtkinterコールバックを使用していくつかの変数を設定する必要があります。だから私は変数を効率的にtkinterコールバックで設定する

Button1 = Button(parentframe, text="set", command = self.setvar) 

def setvar(self): 
    self.myvar = 7 

(クラス定義の内部で)言うことができるインライン(ラムダ)関数ではなく、他愛ないコールバックで物事を乱雑にしていることを行うには、いくつかの方法はありますか?

command = lambda *args: something? 

答えて

1

あなたはこれを行うことができます:

command = lambda: setattr(self, 'myvar', 7) 
1

あなたはTkinterののinteger variable class、あなたが疑われるとしてラムダ関数を使用して、このような何かを行うことができます。変数IntVarには.get().set()のメソッドがあり、意外にもその値を取得して設定できます。例えば次のように乗り:

from Tkinter import * 


class App(Frame): 
    def __init__(self, *args, **kwargs): 
     Frame.__init__(self, *args, **kwargs) 
     # initialise Integer Variables 
     self.example1 = IntVar() 
     self.example1.set(2) 

     self.text1 = Entry(root, textvariable=self.example1, state=DISABLED) 
     self.text1.grid(row=0, column=0) 

     self.button1 = Button(root, text="Double", command=lambda: self.double_value(self.example1)) 
     self.button1.grid(row=1, column=0) 

    def double_value(self, var): 
     var.set(var.get() * 2) 


root = Tk() 
app = App(root) 

root.mainloop() 

これは、あなたの柔軟性のビットを与え、異なるEntryボックスやIntVar変数に関連する複数のボタンに同じ機能を適用するために拡張することができます。

関連する問題