CheckBox使用另一个方法内部的方法



嗨,我想在另一个方法AGM中使用方法checkbutton_value1。

def AGM():
   def A1():
      print "A1"
   def A2():
      print "A2"
   def checkbutton_value1():
      x=var1.get()

我尝试将checkbutton_value1用于checkbutton命令,但它不起作用。

master = Tk() # Open up GUI connection
master.title('Program Application')
var1=IntVar()
checkbox_1 = Checkbutton(master, text='Interpolate Graph', variable=var1,command=checkbutton_value1)
checkbox_1.pack()
master.mainloop() # Continue loop till user close tab

错误消息

NameError: name 'checkbutton_value1' is not defined
这可能是因为您在AGM的命名空间中定义了checkbutton_value1

需要做的是:

def checkbutton_value1():
    x = var1.get()

master = Tk()  # Open up GUI connection
master.title('Program Application')
var1 = IntVar()
checkbox_1 = Checkbutton(master, text='Interpolate Graph',
                         variable=var1, command=checkbutton_value1)
checkbox_1.pack()
master.mainloop() # Continue loop till user close tab

现在,这将起作用。然而,在糟糕的情况下,最好使用lambda:

checkbox_1 = Checkbutton(master, text='Interpolate Graph',
                         variable=var1, command=lambda: var1.get())

你能发布一个更大的片段吗?这可能是失败的,因为checkbutton_value1是在引用它的行没有访问权限的范围内定义的。

例如,这不会产生错误:

class test:
    def foo():
        pass

print(test.foo())

最新更新