传递额外的参数与Tkinter的绑定 [英] Passing extra arguments with Tkinter Bindings

查看:163
本文介绍了传递额外的参数与Tkinter的绑定的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图绑定一个额外的参数的选择以低于以下单选按钮。我试图让这个当 WSRB_UD 被触发我可以知道哪个单选按钮触发它。我怎么去呢?

段:

  self.WS.SW.SearchFrame = []
        self.WS.SW.SearchRB = []        self.WS.RBvar = Tkinter.IntVar()        I = 0
        而I< 6:            帧= Tkinter.Frame(self.WS.SW.OptFrame,宽度= 125,高度= 22,BD = 1,
                                             BG = self.WSbg)
            Frame.grid(柱= 0,行= 4 + I)
            Frame.grid_propagate(0)            self.WS.SW.SearchFrame.append(帧)
            RB = Tkinter.Radiobutton(self.WS.SW.SearchFrame [I],值=我,
                               变量= self.WS.RBvar,indicatoron = 0,字体= self.WSfo,
                               FG = self.WSfg,activeforeground = self.WSfg,BG = self.WSbg,activebackground = self.WSbg,
                               selectcolor = self.WSbg,BD = self.WSbw)
            RB.grid()
            RB.bind(<输入>中,self.WSRB_UD,I)
            我打印            self.WS.SW.SearchRB.append(RB)            I = I + 1        self.QuickLinkList = []
        self.WS_timer_count = 0    高清WSRB_UD(个体经营,事件选择):
        打印self.WS.RBvar.get()


解决方案

您可以使用lambda来定义一个匿名部分功能:

  RB.bind(<输入>中,拉姆达事件:self.WSRB_UD(事件,I))

您也可以使用 functools.partial 如果你不喜欢的lambda语法。

I'm trying to bind an extra argument opt to the following radiobuttons below. I'm trying to make it so that when WSRB_UD is triggered I can know which radiobutton triggered it. How do I go about this?

Snippet:

        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()

解决方案

You can use lambda to define an anonymous partial function:

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

You could also use functools.partial if you don't like the lambda syntax.

这篇关于传递额外的参数与Tkinter的绑定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆