Пытаясь выяснить, какая Radiobutton вызвала событие - PullRequest
0 голосов
/ 12 декабря 2010

Я пытаюсь создать набор радиокнопок в Tkinter. Один из атрибутов, который мне действительно хотелось бы иметь, - это способность определять, какая кнопка радио была в последний раз введена. Я пытался привязать к каждой радиопереключателю. Однако, когда событие инициируется, оно каждый раз возвращает одно и то же значение.

Что я делаю не так?

сниппет:

        i = 0
        while i < 5 :

            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, #command=self.WSRB_UD,
                               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>", lambda event: self.WSRB_UD(event, i))


            self.WS.SW.SearchRB.append(RB)
            i = i + 1

        self.QuickLinkList= []
        self.WS_timer_count = 0

    def WSRB_UD(self, event, opt):
        m = self.WS.SW.SearchRB[opt-1].cget("value")
        print m

1 Ответ

1 голос
/ 13 декабря 2010

Ваша лямбда должна быть примерно такой:

lambda event, i=i: self.WSRB_UD(event, i))

Это создает локальную переменную i внутри лямбды, которая связана со значением i во время создания привязки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...