2010-12-11 2 views
2

Я пытаюсь связать дополнительный аргумент с опцией следующим радиокнопкам ниже. Я пытаюсь сделать так, что когда запускается 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 -Когда-вас-пресс-а-переключат) –

ответ

3

Вы можете использовать лямбду определить анонимную частичную функцию:

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

Вы также мог бы использовать functools.partial, если вам не нравится синтаксис лямбды.