AttributeError:' tkapp'对象没有属性' var'

时间:2015-04-11 23:09:22

标签: python checkbox tkinter boolean output

我正在尝试编写一个程序,因此每次单击该复选框时,它都会将“hello world”打印到输出文件中。

到目前为止,我已经在条目小部件中打印了这些东西,但是如何获得复选框的状态,所以当它点击它打印“hello world”时,如果它没有点击它什么都不做?

import Tkinter as Tk
from Tkinter import StringVar

class SampleApp(Tk.Tk):

    def __init__(self):
        Tk.Tk.__init__(self)
        self.button = Tk.Button(self, text="Get", command=self.on_button)
        self.button.pack()

        labelText=StringVar()
        labelText.set(" First Name")
        labelDir=Tk.Label(self, textvariable=labelText, height=1)
        labelDir.pack()

        directory=StringVar(None)
        self.can_fname =Tk.Entry(self,textvariable=directory,width=50)
        self.can_fname .pack()

        labelText=StringVar()
        labelText.set(" Last Name")
        labelDir=Tk.Label(self, textvariable=labelText, height=1)
        labelDir.pack()

        directory=StringVar(None)
        self.can_lname =Tk.Entry(self,textvariable=directory,width=50)
        self.can_lname .pack()

        var = Tk.IntVar()
        cb = Tk.Checkbutton(self, text="here", variable=var)
        cb.pack()

    def on_button(self):
      if self.var.get():
           print "the lights are on"
      else:
           print "the lights are off"

      a=self.can_fname.get()
      b='hello %s' %(a)

      with open('filename.txt', 'w') as myfile:
          myfile.write(b)


app = SampleApp()
app.mainloop()

1 个答案:

答案 0 :(得分:1)

var__init__方法或构造函数的局部变量。您基本上收到以下错误:

AttributeError: 'tkapp' object has no attribute 'var'

因为var方法终止执行后__init__被垃圾收集。您应该将var更改为self.var,以使其成为该类的字段(属性)。