Python tkinter RadioButton回调函数

时间:2016-11-12 20:33:31

标签: python tkinter callback widget

这来自一个按钮,按下该按钮会生成一个单选按钮。我无法访问radiobutton的选择。一切正常,但所选功能的输出为零。我尝试使用local和global var,但结果是一样的。

def callback_st(): # RadioButton select technology
    var = IntVar()
    m=0
    for m in range(len(un_tech)):
        Radiobutton(radio_frame, text=un_tech[m], value=m, variable=var,
                    command=selected(var)).pack(anchor=W)

def selected(var):
    print(var)

这不起作用。我用lambda解决了:

    def selected(jst):
        global sel_technology
        sel_technology=un_tech[jst]
        print(sel_technology)

def callback_st(): #RadioButton select technology
    var_st = IntVar()
    m=0
    for m in range(len(un_tech)):
    Radiobutton(radio_frame, text=un_tech[m], value=m, variable=var_st,
                command = lambda jst=m: selected(jst)).pack(anchor=W)

这是我想要的,但它不是我想要的解决方案,我认为不是正确的方法。那么,有人可以帮我找到正确的方法吗?

1 个答案:

答案 0 :(得分:1)

在第一次尝试时,当params[:unsubscribe_hash]的值为selected时,您立即调用 var。你使用lambda表达式避免了这种情况,但你是对的,这是原始错误的一个尴尬的解决方法。将0设为全局,并var将其作为全局访问。修改你的第一个代码:

selected

如果要定义类和方法,则var将是实例属性而不是全局属性。