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

时间:2013-11-26 07:17:00

标签: python tkinter

您好我想在另一种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

2 个答案:

答案 0 :(得分:0)

这可能是因为你在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())

答案 1 :(得分:0)

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

例如,这不会产生该错误:

class test:

    def foo():
        pass


print(test.foo())