[英]Python tkinter RadioButton callback function
这来自一个按钮,按下该按钮会生成一个单选按钮。 我无法使用单选按钮进行选择。 一切正常,但是所选函数的输出为零。 我尝试同时使用本地和全局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)
这可以按我想要的方式工作,但这不是我想要的解决方案,我认为这不是正确的方法。 那么,有人可以帮助我找到正确的方法吗?
在第一次尝试中,当var
的值为0
时,您立即调用 selected
。 您使用lambda表达式避免了这种情况,但是您正确地认为这对于原始错误而言是一个尴尬的解决方法。 将var
设为global,并selected
其作为全局selected
访问。 修改您的第一个代码:
var = IntVar()
def selected():
print(var.get())
def callback_st():
...
...command=selected...
如果要定义类和方法,则var将是实例属性,而不是全局属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.