2010-12-11 11 views
2

余分な引数optを次のラジオボタンにバインドしようとしています。 WSRB_UDがトリガーされたときに、どのラジオボタンがトリガーされたかを知ることができるようにしています。これについてどうすればいいですか?Tkinterバインディングで余分な引数を渡す

スニペット:

 self.WS.SW.SearchFrame = [] 
     self.WS.SW.SearchRB = [] 

     self.WS.RBvar = Tkinter.IntVar() 

     i = 0 
     while i < 6 : 

      Frame = Tkinter.Frame(self.WS.SW.OptFrame, width=125, height=22, bd=1, 
              bg=self.WSbg) 
      Frame.grid(column=0, row=4 + i) 
      Frame.grid_propagate(0) 

      self.WS.SW.SearchFrame.append(Frame) 


      RB = Tkinter.Radiobutton(self.WS.SW.SearchFrame[i], value=i, 
           variable=self.WS.RBvar, indicatoron=0, font=self.WSfo, 
           fg=self.WSfg, activeforeground=self.WSfg, bg=self.WSbg, activebackground=self.WSbg, 
           selectcolor=self.WSbg, bd=self.WSbw) 
      RB.grid() 
      RB.bind("<Enter>", self.WSRB_UD, i) 
      print i 

      self.WS.SW.SearchRB.append(RB) 

      i = i + 1 

     self.QuickLinkList= [] 
     self.WS_timer_count = 0 

    def WSRB_UD(self, event, opt): 
     print self.WS.RBvar.get() 
+0

[tkinter:ボタンを押したときに呼び出される関数の引数の指定](http://stackoverflow.com/questions/2297336/tkinter-specifying-arguments-for-a-function-thats-called) -when-you-press-a-butto) –

答えて

3

あなたは匿名の部分関数を定義するためにラムダを使用することができます。

RB.bind("<Enter>", lambda event: self.WSRB_UD(event, i)) 

あなたはラムダ構文を好きではない場合にもfunctools.partialを使用することができます。

関連する問題