这来自一个按钮,按下该按钮会生成一个单选按钮。我无法访问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)
这是我想要的,但它不是我想要的解决方案,我认为不是正确的方法。那么,有人可以帮我找到正确的方法吗?
答案 0 :(得分:1)
在第一次尝试时,当params[:unsubscribe_hash]
的值为selected
时,您立即调用 var
。你使用lambda表达式避免了这种情况,但你是对的,这是原始错误的一个尴尬的解决方法。将0
设为全局,并var
将其作为全局访问。修改你的第一个代码:
selected
如果要定义类和方法,则var将是实例属性而不是全局属性。